从PHP生成SQL中的MySQL数据转储

从PHP生成SQL中的MySQL数据转储,php,sql,mysql,Php,Sql,Mysql,我正在编写一个PHP脚本,从数据库中生成SQL转储,用于版本控制。它已经通过运行相应的SHOW CREATE…查询来转储数据结构。现在我想转储数据本身,但我不确定最好的方法。我的要求是: 我每行需要一张唱片 行必须按主键排序 无论数据类型(整数、字符串、二进制数据…)如何,SQL都必须有效且准确 数据未更改时,转储应该相同 我可以检测并作为外部命令运行mysqldump,但这会增加额外的系统要求,我需要解析输出,以便删除带有我不需要的转储信息(例如服务器版本或转储日期)的页眉和页脚。我希望我

我正在编写一个PHP脚本,从数据库中生成SQL转储,用于版本控制。它已经通过运行相应的
SHOW CREATE…
查询来转储数据结构。现在我想转储数据本身,但我不确定最好的方法。我的要求是:

  • 我每行需要一张唱片
  • 行必须按主键排序
  • 无论数据类型(整数、字符串、二进制数据…)如何,SQL都必须有效且准确
  • 数据未更改时,转储应该相同
我可以检测并作为外部命令运行
mysqldump
,但这会增加额外的系统要求,我需要解析输出,以便删除带有我不需要的转储信息(例如服务器版本或转储日期)的页眉和页脚。我希望我的脚本尽可能简单,这样就可以保存在一个独立的文件中


我的备选方案是什么?

可以尝试system()函数。希望您使用linux:)

我认为mysqldump输出解析仍然是最简单的。我认为确实需要排除的元数据很少,因此删除这些元数据应该只有几行代码

您还可以查看以下mysqdump选项:--tab,--compact

“按主键顺序从表名中选择*” 您可以从information_schema数据库或“show tables”命令获取表名。还可以从“从tablename显示索引”中获取主键
然后循环并创建insert语句字符串

同时,我正在尝试显示索引和mysql\u real\u escape\u string()mysqldump并没有真正添加额外的系统要求,它随mysql一起提供。所以mysqldump将mysql添加为系统要求。这里的大多数开发人员没有本地服务器:他们连接到局域网中的公共服务器。如果MySQL在公共服务器上运行,并且您的脚本也在公共服务器上运行,我看不出有任何问题。您确定使用自制转储对数据进行版本控制是个好主意吗?我喜欢对模式进行版本控制的想法,但是数据?Linux之外也有系统:)