如何使用PHP将MySQL表备份到转储中?

时间:2012-01-25 15:22:18

标签: php mysql sql mysqldump

有没有办法使用php 转储整个数据库,但不能转储到CSV或XML ,因为我需要纯SQL格式。

我需要的转储示例:

CREATE TABLE 'table_name' etc..;
INSERT INTO 'table_name' (field, field2) VALUES ('1','2');
INSERT INTO 'table_name' (field, field2) VALUES ('1','2');

我没有使用 exec() system()。 而无需手动创建INSERT语句.. 例如:

while($row = mysql_results) {
 $sql_dump = 'INSERT INTO ...';
}

谢谢! :)

3 个答案:

答案 0 :(得分:1)

您可以运行SHOW CREATE TABLE查询。这是在mysql客户端中完成的:

+-------+----------------------------------------------------------------+
| Table | Create Table                                                   |
+-------+----------------------------------------------------------------+
| test2 | CREATE TABLE `test2` (
  `AAA` varchar(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+----------------------------------------------------------------+

当然可以通过任何常规选择语句检索数据,如果您使用脚本语言进行检索,则可以根据需要存储数据。

如果您只是在mysql客户端并且可以访问文件系统,则可以运行Select ... Into Outfile语句:

SELECT * INTO OUTFILE 'backup.tab'
ENCLOSED BY '"'
FROM <TableName>;

以上将创建一个制表符分隔文件。

要在运行中加载数据:

LOAD DATA INFILE 'backup.tab'
INTO TABLE <TableName>
ENCLOSED BY '"';

尝试从MySQL中重新创建INSERT语句可能最终会遇到有关转义特殊字符等问题的问题。使用CSV或Tab分隔的数据文件被视为导出和导入数据的完美标准。

答案 1 :(得分:0)

如果您可以远程访问数据库(MySQL端口而不是ssh),您可以尝试在服务器之间设置同步。您可以使用其他具有开放或必需访问权限的服务器。在localhost上设置就足够了 最新版本的PHPMyAdmin提供了设置同步的功能(将其安装在本地计算机上)。 SQLYog也支持同步功能。

答案 2 :(得分:0)

尝试这样的事情

$command="mysqldump  --host=localhost --user=USER --password=***** DATABASENAME.table > db.sql";
system($command);