par
CyberTaf » 01 juil. 2008, 11:08
Bonjour.
J'ai trouvé sur le web un script PHP qui permets de faire un dump d'une base de données.
<?php
$db_base = "_nomdelabase";
header("Pragma: no-cache");
header("Content-Type: application/x-gzip; name=\"$db_base.sql.gz\"");
header("Content-Disposition: attachment;filename=\"$db_base.sql.gz\"");
header("Content-Transfer-Encoding: binary");
echo gzencode("--\n");
echo gzencode("-- Dump de la base $db_base\n");
echo gzencode("--\n");
$sql_tables = "SHOW TABLES";
$req_tables = mysql_query($sql_tables);
while (list($table) = mysql_fetch_row($req_tables)) {
echo gzencode("\n--\n-- Table $table\n\n");
echo gzencode("DROP TABLE IF EXISTS $table;\n");
$sql_create_table = "SHOW CREATE TABLE $table";
$req_create_table = mysql_query($sql_create_table);
$create_table = mysql_fetch_array($req_create_table);
echo gzencode($create_table[1].";\n");
echo gzencode("\n--\n-- Remplissage de $table\n\n");
$sql_fill_table = "SELECT * FROM $table";
$req_fill_table = mysql_query($sql_fill_table);
while ($row = mysql_fetch_assoc($req_fill_table)) {
$line_insert = "INSERT INTO $table (";
$l_value = ") VALUES (";
foreach ($row as $field => $value) {
$line_insert .= "`$field`, ";
$l_value .= "'".mysql_real_escape_string($value)."', ";
}
$line_insert = substr($line_insert, 0, -2);
$l_value = substr($l_value, 0, -2);
echo gzencode($line_insert.$l_value.");\n");
}
}
mysql_close();
?>
Ce script est très pratique, mais il génère un fichier .SQL assez lourd car il fait des insertions complètes du style
INSERT INTO `table` (blablabla) VALUES(blablabla);
INSERT INTO `table` (blablabla) VALUES(blablabla);
INSERT INTO `table` (blablabla) VALUES(blablabla);
...
Je souhaiterai qu'il fasse des insertions étendues du style
INSERT INTO `table` VALUES
(blablabla),
(blablabla),
(blablabla),
...
J'ai essayé de modifier le script en question, mais je crois que ça dépasse un peu mes compétences
Donc si quelqu'un peut m'aider ou connait le script que je recherche, ce serait sympa.
D'avance merci

Bonjour.
J'ai trouvé sur le web un script PHP qui permets de faire un dump d'une base de données.
[php]
<?php
$db_base = "_nomdelabase";
header("Pragma: no-cache");
header("Content-Type: application/x-gzip; name=\"$db_base.sql.gz\"");
header("Content-Disposition: attachment;filename=\"$db_base.sql.gz\"");
header("Content-Transfer-Encoding: binary");
echo gzencode("--\n");
echo gzencode("-- Dump de la base $db_base\n");
echo gzencode("--\n");
$sql_tables = "SHOW TABLES";
$req_tables = mysql_query($sql_tables);
while (list($table) = mysql_fetch_row($req_tables)) {
echo gzencode("\n--\n-- Table $table\n\n");
echo gzencode("DROP TABLE IF EXISTS $table;\n");
$sql_create_table = "SHOW CREATE TABLE $table";
$req_create_table = mysql_query($sql_create_table);
$create_table = mysql_fetch_array($req_create_table);
echo gzencode($create_table[1].";\n");
echo gzencode("\n--\n-- Remplissage de $table\n\n");
$sql_fill_table = "SELECT * FROM $table";
$req_fill_table = mysql_query($sql_fill_table);
while ($row = mysql_fetch_assoc($req_fill_table)) {
$line_insert = "INSERT INTO $table (";
$l_value = ") VALUES (";
foreach ($row as $field => $value) {
$line_insert .= "`$field`, ";
$l_value .= "'".mysql_real_escape_string($value)."', ";
}
$line_insert = substr($line_insert, 0, -2);
$l_value = substr($l_value, 0, -2);
echo gzencode($line_insert.$l_value.");\n");
}
}
mysql_close();
?>
[/php]
Ce script est très pratique, mais il génère un fichier .SQL assez lourd car il fait des insertions complètes du style
[quote]
INSERT INTO `table` (blablabla) VALUES(blablabla);
INSERT INTO `table` (blablabla) VALUES(blablabla);
INSERT INTO `table` (blablabla) VALUES(blablabla);
...
[/quote]
Je souhaiterai qu'il fasse des insertions étendues du style
[quote]
INSERT INTO `table` VALUES
(blablabla),
(blablabla),
(blablabla),
...
[/quote]
J'ai essayé de modifier le script en question, mais je crois que ça dépasse un peu mes compétences :(
Donc si quelqu'un peut m'aider ou connait le script que je recherche, ce serait sympa.
D'avance merci :wink: