【问题标题】:How does the phpMyAdmin export feature work?phpMyAdmin 导出功能如何工作?
【发布时间】:2012-07-08 11:13:12
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: mysql phpmyadmin


    【解决方案1】:

    您可以查看 phpMyAdmin 源代码(开源软件的优势)。查看libraries/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 完成所有操作。

    【讨论】:

    • 谢谢,正是我想要的。是的,我想,因为我知道 php,我想用 PHP 做所有事情。它是类似 WordPress 的 CMS 编程。我认为 phpMyAdmin 会运行一系列步骤,但在花费大量时间从头开始之前,我必须先询问一下。我就是要重新发明轮子来浪费很多美好的星期六。
    • 好问题。我今天学到了一些疯狂的东西。我不明白为什么他们不通过数据库连接提供类似 mysqldump 的功能。为什么要将转储分离到另一个程序?
    • @Phil_1984_ 每次我必须编写代码来做这件事时,我都想知道同样的事情。那确实非常有用。我不知道有任何 RDBMS 可以做到这一点,它们有 SQL 指令可以在本地转储(如 SELECT... INTO OUTFILE 或 BACKUP DATABASE)或命令行工具或 GUI 工具,但没有任何事情可以通过您自己的网络进行应用程序。
    • PhpMyAdmin 从不使用 mysql 中的 mysqldump 二进制文件?
    • 进入PMA\libraries\classes\Plugins\Export\ExportSql.php你会发现public function exportData()...
    猜你喜欢
    • 2012-08-16
    • 2012-04-10
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 2014-02-01
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多