【问题标题】:Generate MySQL data dump in SQL from PHP从 PHP 生成 SQL 中的 MySQL 数据转储
【发布时间】:2010-04-28 10:45:02
【问题描述】:

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

  • 我需要每行记录
  • 行必须按主键排序
  • 无论数据类型如何(整数、字符串、二进制数据...),SQL 都必须有效且准确
  • 当数据没有改变时,转储应该是相同的

我可以检测并运行mysqldump 作为外部命令,但这增加了额外的系统要求,我需要解析输出以删除带有我不需要的转储信息(例如服务器版本或转储)的页眉和页脚日期)。我希望我的脚本尽可能简单,这样它就可以保存在一个独立的文件中。

我有什么选择?

【问题讨论】:

  • 同时,我正在尝试 SHOW INDEX 和 mysql_real_escape_string()
  • mysqldump 并没有真正增加额外的系统要求,它随 mySQL 一起提供。
  • 所以 mysqldump 添加 MySQL 作为系统要求。这里的大多数开发人员没有本地服务器:他们连接到 LAN 中的公共服务器。
  • 如果 MySQL 在公共服务器上运行,并且您的脚本也在公共服务器上运行,我看不出有什么问题。
  • 您确定使用自制转储对数据进行版本控制是个好主意吗?我喜欢版本化模式的想法,但是数据呢?

标签: php sql mysql


【解决方案1】:

我觉得mysqldump的输出解析还是最简单的。我认为您必须排除的元数据确实很少,因此删除这些应该只是几行代码。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • Linux以外的系统也有:)
    【解决方案3】:

    "Select * from tablename order by primary key" 您可以从 information_schema 数据库或“显示表”命令中获取表名。也可以从“show index from tablename”中获取主键 然后循环并创建插入语句字符串

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 2011-12-25
      • 2016-07-29
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      相关资源
      最近更新 更多