4

如果我想创建一个与 phpMyAdmin 中的 Export 选项卡执行相同操作的 PHP 函数,我该怎么做?我不知道是否有执行此操作的 MySQL 函数,或者 phpMyAdmin 是否只是手动构建导出文件(在 SQL 中)。没有外壳访问。只是使用PHP。

我尝试了mysqldump的文档,但这似乎需要使用 shell。我不太确定那是什么——也许我的问题是:你如何使用 shell?

我的愚蠢想法是允许非技术用户使用 MySQL 在一台服务器(例如本地主机)上构建站点,然后将站点、数据库和所有内容导出到另一台服务器(例如远程服务器)。

我想我对导入过程很清楚。

4

1 回答 1

5

您可以查看 phpMyAdmin 源代码(开源软件的优势)。检查 library/export/sql.php 脚本文件中的 export.php 脚本和支持函数。

总之,phpMyAdmin 所做的是:

  • 获取给定数据库中的表列表(SHOW TABLES FROM ...),
  • 获取每个表的创建查询(SHOW CREATE TABLE...),
  • 解析它并从中提取列定义,
  • 获取所有数据(SELECT * FROM...)
  • 根据列数据构建查询。

我为自己的应用程序编写了类似的代码(出于备份目的,当 phpMyAdmin 的 GPL 许可证不允许我使用它时),但是我使用 DESCRIBE 来获取列定义。我认为他们宁愿解析 SHOW CREATE TABLE 输出,因为包含比 DESCRIBE 输出更多的信息。

这种生成 SQL 语句的方式需要小心处理转义,但它具有一定的灵活性,因为您可以转换类型、过滤或清理数据等。它也比使用 mysqldump 之类的工具慢很多,您应该注意不要消耗所有可用内存(尽快写入,经常写入,不要将所有内容都保存在内存中)。

如果您将实现迁移过程(从服务器到服务器),那么使用一些 shell 脚本并直接调用 mysqldump 可能会更容易,除非您将使用 PHP 完成所有操作。

于 2012-07-09T06:28:02.347 回答