国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php實現mysql數據庫分表分段備份

2024-05-04 23:36:25
字體:
來源:轉載
供稿:網友

本文給大家分享的是php實現mysql數據庫分卷備份,選擇表進行備份,實現單個sql文件及分卷sql導入。有需要的小伙伴可以參考下

分卷導出思路:統計sql語句變量的長度,按1個字符當成1 字節比較,如果大于設定分卷大小,則寫入一個sql文件(我也不知道這樣統計是否穩當,這也是借鑒其他的人的)。

分卷導入思路:按行讀取sql文件,將每一行當作完整的sql語句存到數組再循環執行插入數據庫就可以了,但是在創建表語句分了多行,這個需要單獨處理(就這個花了我好長時間的);

 

 
  1. <?php 
  2. //宋正河 轉載請注明出處 
  3. set_time_limit(0); 
  4. header('content-type:text/html;charset=utf-8'); 
  5. mysql_connect('localhost','root','root'); 
  6. mysql_select_db('test'); 
  7. $table_array=get_tables('test'); 
  8. mysql_query('set names utf8'); 
  9. $filesize=1024*1024*4; 
  10. $start=$_GET['start']?$_GET['start']:0; 
  11. $part=$_GET['part']?$_GET['part']:'1'
  12. $table_index=$_GET['table_index']?$_GET['table_index']:'0'
  13. $table=$table_array[$table_index]; 
  14. $num=200000000;//這個數要足夠大,可以是總記錄數 
  15. $backupdata=''
  16. if($start=='0'){ 
  17. $query="SHOW CREATE TABLE `{$table}`"
  18. $result = mysql_query($query); 
  19. $row = mysql_fetch_row($result); 
  20. $backupdata .= "DROP TABLE IF EXISTS `{$table}`;/n" . $row[1] . ";/n/n"
  21. $limit=($start=='0')?'':" limit $start,$num "
  22. $query="select * from `{$table}` $limit "
  23. $result=mysql_query($query); 
  24. $numfields = mysql_num_fields($result); //統計字段數 
  25. while($row=mysql_fetch_row($result)){ 
  26. $comma = ''//存儲逗號 
  27. $backupdata_tmp = "INSERT INTO `{$table}` VALUES ("
  28. for($i=0; $i<$numfields$i++){ 
  29. $backupdata_tmp .= $comma . "'" . mysql_escape_string($row[$i]) . "'"
  30. $comma = ','
  31. $backupdata_tmp .= ");/n"
  32. if(strlen($backupdata)+strlen($backupdata_tmp) > $filesize){ 
  33. //寫入文件并跳轉 
  34. $file='data/'.$table.'-'.$part.'.sql'
  35. file_put_contents($file,$backupdata); 
  36. echo $file.' 備份完成,程序繼續進行!'
  37. $part++; 
  38. //分段 
  39. //表名 
  40. //起點 
  41. //跳轉 
  42. sleep(3); 
  43. echo "<script>location.href='?start={$start}&table_index={$table_index}&part={$part}';</script>"
  44. exit
  45. $backupdata.=$backupdata_tmp
  46. $start++; 
  47. if($backupdata){ 
  48. $file='data/'.$table.'-'.$part.'.sql'
  49. file_put_contents($file,$backupdata); 
  50. echo $table.'備份完成!<br />'
  51. sleep(2); 
  52. $table_index++; 
  53. if($table_array[$table_index]){ 
  54. echo "<script>location.href='?table_index={$table_index}';</script>"
  55. exit
  56. }else
  57. echo '恭喜你,數據庫備份完畢!'
  58. function get_tables($db){ 
  59. $tq = mysql_list_tables($db); 
  60. while($tr = mysql_fetch_row($tq)){ 
  61. $arrtb[] = $tr[0]; 
  62. return $arrtb
  63. ?> 

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇平县| 科技| 太仓市| 枞阳县| 天峻县| 大新县| 乌兰县| 广东省| 新乐市| 茂名市| 博乐市| 兴宁市| 金溪县| 房山区| 乌拉特中旗| 盐山县| 汝州市| 勐海县| 德惠市| 尼勒克县| 梧州市| 临武县| 广丰县| 滦平县| 视频| 昌宁县| 寿阳县| 邻水| 客服| 翁源县| 贡嘎县| 波密县| 朔州市| 江山市| 聊城市| 讷河市| 伽师县| 新郑市| 贡嘎县| 轮台县| 平和县|