繁体   English   中英

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

[英]How to back up MySQL table into a dump with PHP?

有没有办法使用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 ...';
}

谢谢! :)

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

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

当然,可以通过任何常规的select语句检索数据,并且如果您使用脚本语言来编写数据,则可以根据需要存储数据。

如果您只是在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或制表符分隔的数据文件被视为导出和导入数据的完美标准。

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

试试这个

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM