如果我想创建一个 PHP 函数来执行与 phpMyAdmin 中的“导出”选项卡相同的操作,我该怎么做?我不知道是否有执行此操作的 MySQL 函数,或者 phpMyAdmin 是否只是手动构建导出文件(在 SQL 中)。没有外壳访问。仅使用 PHP。
我尝试了 mysqldump 的文档,但这似乎需要使用 shell。我什至不太确定那是什么 - 也许我的问题是:您如何使用 shell?
我的愚蠢想法是允许非技术用户使用 MySQL 在一台服务器(比如本地主机)上构建站点,然后将站点、数据库和所有内容导出到另一台服务器(例如远程服务器)。
我想我已经很清楚导入过程了。
最佳答案
您可以查看 phpMyAdmin 源代码(开源软件的一个优势)。检查 export.php 脚本和 libraries/export/sql.php 脚本文件中的支持函数。
总而言之,phpMyAdmin 所做的是:
- 获取给定数据库中表的列表(SHOW TABLES FROM...),
- 获取每个表的创建查询(SHOW CREATE TABLE...),
- 解析它并从中提取列定义,
- 获取所有数据(SELECT * FROM...)
- 根据列数据构建查询。
我为我自己的应用程序编写了类似的代码(出于备份目的,当 phpMyAdmin 的 GPL 许可证不允许我使用它时),但是我使用 DESCRIBE 来获取列定义。我认为他们宁愿解析 SHOW CREATE TABLE 输出,因为包含比 DESCRIBE 输出更多的信息。
这种生成 SQL 语句的方法需要小心处理转义,但它允许一些灵 active ,因为您可以转换类型、过滤或清理数据等。它也比使用 mysqldump 这样的工具慢很多并且您应该注意不要消耗所有可用内存(尽快写入,经常写入,不要将所有内容都保留在内存中)。
如果您将实现一个迁移过程(从一个服务器到另一个服务器),也许使用一些 shell 脚本并直接调用 mysqldump 会更容易,除非您将使用 PHP 完成所有事情。
关于mysql - phpMyAdmin 导出功能如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11388546/