有没有办法使用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 ...';
}
谢谢! :)
答案 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);