【问题标题】:how to backup some specific table from db and save the .sql to some location in my computer , using php code?如何使用 php 代码从 db 备份某些特定表并将 .sql 保存到我计算机中的某个位置?
【发布时间】:2014-02-04 06:48:28
【问题描述】:

我需要备份数据库中一些选定的表。我的 php 页面中有一个表单,当单击表单上的提交按钮时,选定表的备份会以 .sql 或 .sql zip 格式存储到我的计算机文件。

(例如:如果 db1 是我的数据库名称,table1,table2,table3 是表,则单击表单中的提交按钮仅备份 table1,table2 并将其保存为 .sql 或 .sqlzip 文件在我的电脑)。

如果有人知道解决方案,请在此处发布。

【问题讨论】:

  • 我不建议使用 PHP 代码来执行这项工作,因为您可以使用 mysqldump 来执行此操作。但无论如何,你仍然可以使用 PHP 的exec() 来执行mysqldump 命令,但这听起来有点多余。一个 shell 脚本(如果基于 Linux)已经足够了。
  • 这是针对我的 wordpress 网站插件工作中的特定需求。所以我需要 php 代码。如果您知道代码,请提供帮助。我写 if(isset($_REQUEST['submit'])){ mysql_query('mysqldump -usecret_user -psecret_pass gcertificate wp_wpgc_campaigns > ThreeTablesBackup4Feb.sql'); }。但是代码不起作用。
  • mysqldump 是命令/可执行文件,而不是 SQL 语句。此外,mysql_* 函数已被弃用;请改用 PDO 或 MySQLi。问题比你想象的要多得多,比如网络超时。最后,不要重新发明轮子,有很多 WP 插件在做同样的事情;你可以参考他们的代码。
  • 这是个好建议。

标签: php mysql database-backups


【解决方案1】:

如果您要从 mydb 转储表 t1、t2 和 t3

mysqldump -uYouruser -pYourPassword YourDBName Table1 Table2 Table3 > /PathWhereToStoreBackup/mydb_tables.sql

如果您在 mydb 中有大量表,并且想要转储除 t1、t2 和 t3 之外的所有表,请执行以下操作:

DBTODUMP=mydb
TBLIST=`mysql -u... -p... -AN -e"select group_concat(table_name separator ' ') from information_schema.tables where table_schema='${DBTODUMP}' and table_name not in ('t1','t2','t3')"`
mysqldump -u... -p... ${DBTODUMP} ${TBLIST} > mydb_tables.sql

【讨论】:

  • 感谢您的支持。但是代码不起作用。我写 if(isset($_REQUEST['submit'])){ mysql_query('mysqldump -usecret_user -psecret_pass gcertificate wp_wpgc_campaigns > ThreeTablesBackup4Feb.sql');我写这个代码作为答案中提到。但它不工作
  • 简化了我的回答..你面临的error/problem是什么
  • 没有错误/问题,但我没有在任何位置看到 .sql 文件。真的我不知道 .sql 文件的保存位置。我查看下载文件夹但没有 sql文件在那里。
  • if(isset($_REQUEST['submit'])){ $table_name = "wp_wpgc_campaigns"; $backup_file = "/wp_wpgc_campaigns.sql"; $sql = "SELECT * INTO OUTFILE '$backup_file' FROM $table_name"; mysql_select_db('gcertificate'); $retval = mysql_query($sql); if(!$retval) { die('无法进行数据备份:' .mysql_error()); } echo "备份数据成功\n";我写了这段代码。它正在工作,但 sql 文件不包含数据。文件大小为 0kb
  • 这也不起作用 mysql_query('mysqldump -root - gcertificate wp_wpgc_campaigns> /mydb_tables.sql');。非常感谢您的支持。请再考虑一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多