mysql - phpMyAdmin 导出功能如何工作?

标签 mysql phpmyadmin

如果我想创建一个 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/

相关文章:

php - MySQL SUM() 给出的总数不正确

mysql - 错误代码 : 1111. 在存储过程中使用组函数自动创建触发器无效

php - 在网格中显示来自数据库的图像 - laravel

php - 如何获取自动递增变量并将其插入到插入查询中

php - 如何设置phpmyadmin的用户名和密码

php - 在 yii2 中使用限制范围?

mysql - 从另一个表插入不重复的内容

Mysql 无法正常工作

php - impresspages 数据库大小为 3mb。 ip_widget 有很多行

来自 cpanel 的 PhpMyAdmin 连接使用自定义用户