Portál AbcLinuxu, 28. října 2025 14:02
$data=file_get_contents('http://adresa/soubor.sql');
mysqli_multi_query($data);
$soubor = fopen("./soubor.sql", "w");
fwrite($soubor, $data);
fclose($soubor);
mysql_query("SOURCE './soubor.sql' ");
Data v souboru jsou uloženy takto:
"INSERT INTO `tabulka` VALUES ('hodnota1,'hodnota2','hodnota3','hodnota4');"
"INSERT INTO `tabulka` VALUES ('hodnota1,'hodnota2','hodnota3','hodnota4');"
"INSERT INTO `tabulka` VALUES ('hodnota1,'hodnota2','hodnota3','hodnota4');"
"INSERT INTO `tabulka` VALUES ('hodnota1,'hodnota2','hodnota3','hodnota4');"
Řešení dotazu:
INSERT INTO `table`(`c1`, `c2`) VALUES ('foo1', 'bar1'), ('foo2', 'bar2'), ('foo3', 'bar3')
Tak bych se možná vyprdl na nějaké multiquery a prostě udělal něco jako
$sql = "INSERT INTO `table`(`c1`, `c2`) VALUES ";
foreach($file as $line)
{
$sql .= |řetězec mezi VALUES a středníkem v $line|
}
mysql_query($sql);
<?php
passthru("nohup mysql -u USERNAME -pPASSWORD DBNAME < dump.sql");
ale obávám se, že to na Endoře neprojde.
Asi by bylo jednodušší a bezpečnější posílat data na server ve formátu CSV nebo XML a následně je zpracovat skriptem. Tím se odstraní závislost na rozhraní konkrétního databázového stroje a také se tím import zrychlí.
INSERT INTO `tabulka` VALUES ('hodnota1,'hodnota2','hodnota3','hodnota4');
INSERT INTO `tabulka` VALUES ('hodnota1,'hodnota2','hodnota3','hodnota4');
tabulka,hodnota1,"hodnota2","hodnota3","hodnota4" item,hodnota1,"hodnota2" tabulka,hodnota1,"hodnota2","hodnota3","hodnota4" item,hodnota1,"hodnota2" item,hodnota1,"hodnota2"... prostě CSV ... nebo místo toho použít XML Je nutné si uvědomit, že SQL backup není určen pro přenášení dat, ale pro zálohování.
<?php
$con = new mysqli("localhost", "user", "password", "db");
if($con->connect_errno){
echo "Connect error: ".$con->connect_error."<br />\n";
exit();
}
//set $mq_data
...
$num = 0;
if($con->multi_query($mq_data))
for($num++;$con->next_result();$num++);
if($con->errno){
echo "Error querry №: $num.<br />\n";
echo "Error: ".$con->errno.", message: ".$con->error;
}
<?php
$db = new PDO("mysql:host=localhost;dbname=test", '', '');
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
$sql = <<<SQL
CREATE TABLE car (name varchar(8), type varchar(30));
INSERT INTO car(name, type) VALUES ('car1', 'coupe');
INSERT INTO car(name, type) VALUES ('car2', 'coupe');
SQL;
try {
$db->exec($sql);
} catch (PDOException $e) {
echo $e->getMessage();
}
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.