简体   繁体   English

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

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

Is there any way to dump whole database using php but not to CSV or XML because I need it in pure SQL format. 有没有办法使用php 而不是CSV或XML来转储整个数据库,因为我需要纯SQL格式的数据。

Example of dump I need: 我需要的转储示例:

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

I don't have usage of exec() or system(). 我没有使用exec()system()。 And without manually creating an INSERT statement.. Example: 而且无需手动创建INSERT语句。

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

Thank you! 谢谢! :) :)

You can run a SHOW CREATE TABLE query. 您可以运行SHOW CREATE TABLE查询。 This is done from within a mysql client: 这是从mysql客户端中完成的:

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

Data of course can be retrieved through any regular select statement and if you're doing it with a scripting language you can then store the data however you need. 当然,可以通过任何常规的select语句检索数据,并且如果您使用脚本语言来编写数据,则可以根据需要存储数据。

If you're simply in the mysql client and have access to the file system you can run a Select ... Into Outfile statement: 如果您只是在mysql客户端中并且可以访问文件系统,则可以运行Select ... Into Outfile语句:

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

The above will create a tab separated file. 上面将创建一个制表符分隔的文件。

To load the data back in run: 要将数据加载回运行中:

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

Trying to recreate INSERT statements from within MySQL will likely end up with issues over escaping special characters and things like that. 试图从MySQL内部重新创建INSERT语句可能最终会导致转义特殊字符等问题。 Using CSV or Tab separated data files is seen as perfectly standard for exporting and importing data. 使用CSV或制表符分隔的数据文件被视为导出和导入数据的完美标准。

If you have remote access to database (MySQL port not ssh) you can try to set up synchronization between servers. 如果您可以远程访问数据库(MySQL端口不是ssh),则可以尝试在服务器之间设置同步。 You can use some other server where you have open or required access. 您可以使用其他具有打开或必需访问权限的服务器。 a setup on localhost is enough. 在本地主机上安装就足够了。
Recent versions of PHPMyAdmin provides a functionality to set synchronization (install it on your local machine). 最新版本的PHPMyAdmin提供了用于设置同步的功能(将其安装在本地计算机上)。 Also SQLYog supports sync functionality. SQLYog还支持同步功能。

Try something like this 试试这个

$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