2012-07-09 39 views
3

任何地方都找不到我的问题的好答案。如果我想要创建一个与phpMyAdmin中的Export选项卡具有相同功能的函数,我该怎么做?我不知道是否有一个mysql函数执行此操作,或者如果phpMyAdmin只是手动生成导出文件(在SQL中)。没有外壳访问。只需使用PHP。我尝试了mysqldump的文档,但似乎需要使用shell(我不太确定那是甚么 - 也许我的问题是你是如何使用shell?)。我的愚蠢想法(是不是所有?)是允许非技术用户在一台服务器(比如本地主机)上使用MySQL构建站点,然后将站点,数据库和所有站点导出到另一台服务器(例如。远程服务器)。phpMyAdmin导出如何工作?

我觉得我很清楚导入过程。请帮忙。

回答

5

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

总之,什么phpMyAdmin的作用是:

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

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

这种生成SQL语句的方式需要小心谨慎地处理转义,但它允许一些灵活性,因为可以转换类型,过滤或清理数据等。它比使用像mysqldump,你应该注意不要消耗所有可用的内存(很快写入,经常写入,不要将所有内容都保存在内存中)。

如果你要实现一个迁移过程(从服务器到服务器),用一些shell脚本和直接调用mysqldump可能会更容易,除非你会用PHP做所有事情。

+2

谢谢,正是我在找的东西。是的,我想,因为我知道PHP我想在PHP中做所有事情。这是类似于WordPress的CMS编程。我想phpMyAdmin运行了一系列步骤,但是我必须花很多时间从头开始才问。我的重点是重塑轮子,浪费很多周六的好时光。 – philtune 2012-07-09 12:51:22

+0

伟大的问题。今天我学到了一些疯狂的事我不明白他们为什么不提供类似于数据库连接的mysqldump功能。为什么要将倾销分为另一个计划? – Phil 2017-03-29 15:21:15

+0

@ Phil_1984_每次我必须编写代码来执行操作时,我都想知道同样的事情。这确实非常有用。我不知道任何这样做的RDBMS,他们有SQL指令在本地进行转储(如SELECT ... INTO OUTFILE或BACKUP DATABASE)或命令行工具或GUI工具,但无法通过自己的网络进行转储应用。 – 2017-03-29 19:59:22