Portál AbcLinuxu, 8. května 2025 17:53
$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.