2010-04-28 42 views
8

我正在编写一个PHP脚本来为了版本控制目的从我的数据库中生成SQL转储。它已通过运行适当的SHOW CREATE ....查询来转储数据结构。现在我想倾倒数据本身,但我不确定最好的方法。我的要求是:在PHP中生成MySQL中的数据转储从PHP

  • 我需要每行一个记录
  • 行必须按主键
  • SQL进行排序必须是有效和准确无论数据类型(整数,字符串,二进制数据... )
  • 转储当数据没有改变

我可以检测和运行mysqldump作为外部命令但增加了一个额外的系统要求和我需要解析的输出以便去除标头应该是相同的和脚本与转储信息我不需要(如服务器版本或转储日期)。我希望尽可能简化我的脚本,以便它可以保存在独立的文件中。

我的替代品是什么?

+0

同时,我试用SHOW INDEX和mysql_real_escape_string() – 2010-04-28 11:56:07

+0

mysqldump并没有真正添加额外的系统需求,它附带mySQL。 – 2010-04-30 12:01:27

+0

因此,mysqldump添加MySQL作为系统要求。这里的大多数开发者都没有本地服务器:他们连接到局域网中的公共服务器。 – 2010-04-30 12:54:51

回答

1

我认为mysqldump输出解析仍然是最简单的。我认为你不得不排除的元数据很少,因此,这些元数据应该只是几行代码。

你也可以看看下面的mysqdump选项:--tab,--compact

0

总是可以尝试system()函数。希望你在linux :)

+1

Linux以外还有系统:) – 2010-04-29 08:37:14

0

“SELECT * FROM表名顺序按主键” 可以从INFORMATION_SCHEMA数据库或“显示拿到表名表“命令。也可以从“显示表名索引” 然后循环并创建插入语句字符串的主键