Maison  >  Article  >  développement back-end  >  PHP implémente une sauvegarde en volume de la base de données MySQL

PHP implémente une sauvegarde en volume de la base de données MySQL

墨辰丷
墨辰丷original
2018-06-09 16:24:461586parcourir

Cet article vous expliquera comment implémenter la sauvegarde de volume de base de données MySQL en PHP, sélectionner les tables à sauvegarder et implémenter l'importation de fichiers SQL uniques et de volumes SQL. Les amis dans le besoin peuvent se référer à l'idée d'exportation de volume

 : comptez la longueur des variables de l'instruction SQL, comparez 1 caractère à 1 octet, s'il est supérieur à la taille du volume définie, écrivez un fichier SQL (je ne Je ne sais pas si ces statistiques sont fiables. C'est aussi une référence à d'autres personnes).

L'idée d'importer dans des volumes : lire le fichier SQL ligne par ligne, enregistrer chaque ligne en tant qu'instruction SQL complète dans le tableau, puis boucler et exécuter l'insertion dans la base de données. Cependant, la création. L'instruction de table est divisée en plusieurs lignes. Ceci doit être traité séparément (cela m'a pris beaucoup de temps

<?php
//宋正河 转载请注明出处
set_time_limit(0);
header(&#39;content-type:text/html;charset=utf-8&#39;);
mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;);
mysql_select_db(&#39;test&#39;);
$table_array=get_tables(&#39;test&#39;);
mysql_query(&#39;set names utf8&#39;);
$filesize=1024*1024*4;
$start=$_GET[&#39;start&#39;]?$_GET[&#39;start&#39;]:0;
$part=$_GET[&#39;part&#39;]?$_GET[&#39;part&#39;]:&#39;1&#39;;
$table_index=$_GET[&#39;table_index&#39;]?$_GET[&#39;table_index&#39;]:&#39;0&#39;;
$table=$table_array[$table_index];
$num=200000000;//这个数要足够大,可以是总记录数
$backupdata=&#39;&#39;;
if($start==&#39;0&#39;){
$query="SHOW CREATE TABLE `{$table}`";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$backupdata .= "DROP TABLE IF EXISTS `{$table}`;\n" . $row[1] . ";\n\n";
}
$limit=($start==&#39;0&#39;)?&#39;&#39;:" limit $start,$num ";
$query="select * from `{$table}` $limit ";
$result=mysql_query($query);
$numfields = mysql_num_fields($result); //统计字段数
while($row=mysql_fetch_row($result)){
$comma = &#39;&#39;; //存储逗号
$backupdata_tmp = "INSERT INTO `{$table}` VALUES (";
for($i=0; $i<$numfields; $i++){
$backupdata_tmp .= $comma . "&#39;" . mysql_escape_string($row[$i]) . "&#39;";
$comma = &#39;,&#39;;
}
$backupdata_tmp .= ");\n";
if(strlen($backupdata)+strlen($backupdata_tmp) > $filesize){
//写入文件并跳转
$file=&#39;data/&#39;.$table.&#39;-&#39;.$part.&#39;.sql&#39;;
file_put_contents($file,$backupdata);
echo $file.&#39; 备份完成,程序继续进行!&#39;;
$part++;
//分段
//表名
//起点
//跳转
sleep(3);
echo "<script>location.href=&#39;?start={$start}&table_index={$table_index}&part={$part}&#39;;</script>";
exit;
}
$backupdata.=$backupdata_tmp;
$start++;
}
if($backupdata){
$file=&#39;data/&#39;.$table.&#39;-&#39;.$part.&#39;.sql&#39;;
file_put_contents($file,$backupdata);
}
echo $table.&#39;备份完成!<br />&#39;;
sleep(2);
$table_index++;
if($table_array[$table_index]){
echo "<script>location.href=&#39;?table_index={$table_index}&#39;;</script>";
exit;
}else{
echo &#39;恭喜你,数据库备份完毕!&#39;;
}
function get_tables($db){
$tq = mysql_list_tables($db);
while($tr = mysql_fetch_row($tq)){
$arrtb[] = $tr[0];
}
return $arrtb;
}
?>

Résumé : ce qui précède est tout le contenu de cet article, je) ; j'espère que cela sera utile à l'étude de chacun.

Recommandations associées :

Les quatre algorithmes de tri de base de PHP et deux algorithmes de recherche

PHP génère et télécharge des fichiers CSV et résout les problèmes

Comment PHP accepte les fichiers et obtient le nom du suffixe

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn