Faire un dump d'une base MySQL
Ce script vous permet de "dumper" une base mysql, c'est à dire d'obtenir un fichier SQL qui vous permet de recréer facilement votre base.<?
// la base est définie dans $db_base
// il s'agit de "base_de_test"
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment;filename=\"$db_base.sql\"");
header("Content-Transfer-Encoding: binary");
echo "--\n";
echo "-- Dump de la base $db_base\n";
echo "--\n";
$sql_tables = "SHOW TABLES";
$req_tables = mysql_query($sql_tables);
while (list($table) = mysql_fetch_row($req_tables)) {
echo "\n--\n-- Table $table\n\n";
echo "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 $create_table[1].";\n";
echo "\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 $line_insert.$l_value.");\n";
}
}
?>
// la base est définie dans $db_base
// il s'agit de "base_de_test"
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment;filename=\"$db_base.sql\"");
header("Content-Transfer-Encoding: binary");
echo "--\n";
echo "-- Dump de la base $db_base\n";
echo "--\n";
$sql_tables = "SHOW TABLES";
$req_tables = mysql_query($sql_tables);
while (list($table) = mysql_fetch_row($req_tables)) {
echo "\n--\n-- Table $table\n\n";
echo "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 $create_table[1].";\n";
echo "\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 $line_insert.$l_value.");\n";
}
}
?>
--
-- Dump de la base base_de_test
--
--
-- Table auteurs
DROP TABLE IF EXISTS auteurs;
CREATE TABLE `auteurs` (
`id_auteur` int(8) NOT NULL AUTO_INCREMENT,
`nom_auteur` varchar(255) NOT NULL DEFAULT '',
`verif_auteur` enum('yes','no') NOT NULL DEFAULT 'no',
`cont_auteur` enum('yes','no') NOT NULL DEFAULT 'no',
`edk_auteur` enum('yes','no') NOT NULL DEFAULT 'no',
PRIMARY KEY (`id_auteur`),
UNIQUE KEY `nom_auteur` (`nom_auteur`),
KEY `auteur` (`nom_auteur`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Remplissage de auteurs
INSERT INTO auteurs (`id_auteur`, `nom_auteur`, `verif_auteur`, `cont_auteur`, `edk_auteur`) VALUES ('1', 'CrazyCat', 'no', 'no', 'yes');
INSERT INTO auteurs (`id_auteur`, `nom_auteur`, `verif_auteur`, `cont_auteur`, `edk_auteur`) VALUES ('2', 'Linus Torvald', 'no', 'no', 'no');
--
-- Table categories
DROP TABLE IF EXISTS categories;
CREATE TABLE `categories` (
`id_categorie` int(8) NOT NULL AUTO_INCREMENT,
`nom_categorie` varchar(255) NOT NULL DEFAULT '',
`verif_categorie` enum('yes','no') NOT NULL DEFAULT 'no',
`vide_categorie` enum('yes','no') NOT NULL DEFAULT 'no',
PRIMARY KEY (`id_categorie`),
KEY `nom_categorie` (`nom_categorie`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Remplissage de categories
INSERT INTO categories (`id_categorie`, `nom_categorie`, `verif_categorie`, `vide_categorie`) VALUES ('2', 'Articles', 'no', 'no');
INSERT INTO categories (`id_categorie`, `nom_categorie`, `verif_categorie`, `vide_categorie`) VALUES ('3', 'Livres', 'no', 'no');
-- Dump de la base base_de_test
--
--
-- Table auteurs
DROP TABLE IF EXISTS auteurs;
CREATE TABLE `auteurs` (
`id_auteur` int(8) NOT NULL AUTO_INCREMENT,
`nom_auteur` varchar(255) NOT NULL DEFAULT '',
`verif_auteur` enum('yes','no') NOT NULL DEFAULT 'no',
`cont_auteur` enum('yes','no') NOT NULL DEFAULT 'no',
`edk_auteur` enum('yes','no') NOT NULL DEFAULT 'no',
PRIMARY KEY (`id_auteur`),
UNIQUE KEY `nom_auteur` (`nom_auteur`),
KEY `auteur` (`nom_auteur`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Remplissage de auteurs
INSERT INTO auteurs (`id_auteur`, `nom_auteur`, `verif_auteur`, `cont_auteur`, `edk_auteur`) VALUES ('1', 'CrazyCat', 'no', 'no', 'yes');
INSERT INTO auteurs (`id_auteur`, `nom_auteur`, `verif_auteur`, `cont_auteur`, `edk_auteur`) VALUES ('2', 'Linus Torvald', 'no', 'no', 'no');
--
-- Table categories
DROP TABLE IF EXISTS categories;
CREATE TABLE `categories` (
`id_categorie` int(8) NOT NULL AUTO_INCREMENT,
`nom_categorie` varchar(255) NOT NULL DEFAULT '',
`verif_categorie` enum('yes','no') NOT NULL DEFAULT 'no',
`vide_categorie` enum('yes','no') NOT NULL DEFAULT 'no',
PRIMARY KEY (`id_categorie`),
KEY `nom_categorie` (`nom_categorie`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Remplissage de categories
INSERT INTO categories (`id_categorie`, `nom_categorie`, `verif_categorie`, `vide_categorie`) VALUES ('2', 'Articles', 'no', 'no');
INSERT INTO categories (`id_categorie`, `nom_categorie`, `verif_categorie`, `vide_categorie`) VALUES ('3', 'Livres', 'no', 'no');
Notez que les valeurs des champs auto-incréments sont conservées