phpMyAdmin Export如何运作?

时间:2012-07-09 02:45:21

标签: phpmyadmin mysqli mysqldump

在任何地方找不到我的问题的好答案。如果我想要创建一个 php 函数,该函数与phpMyAdmin中的Export选项卡完全相同,我该怎么办呢?我不知道是否有一个mysql函数可以执行此操作,或者phpMyAdmin是否只是手动构建导出文件(在SQL中)。没有shell访问权限。只是使用PHP。我尝试了mysqldump的文档,但这似乎需要使用shell(我不太确定它甚至是什么 - 也许我的问题是你怎么用shell?)。

我的愚蠢想法(不是全部吗?)是允许非技术用户使用MySQL在一台服务器(比如localhost)上构建一个站点,然后将站点,数据库和所有站点导出到另一台服务器(例如。远程服务器。)

我想我对导入过程非常清楚。请帮忙。

1 个答案:

答案 0 :(得分:5)

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

总之,phpMyAdmin的作用是:

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

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

这种生成SQL语句的方法需要一点小心处理转义但它允许一些灵活性,因为你可以转换类型,过滤或清理数据等。它也比使用像mysqldump这样的工具慢很多并且你应该注意不要消耗所有可用的内存(写得很快,经常写,不要把所有内容都留在内存中)。

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