【问题标题】:Loading large XML file from url into MySQL将大型 XML 文件从 url 加载到 MySQL
【发布时间】:2015-10-09 08:42:52
【问题描述】:

我需要使用 PHP 将 XML 数据从外部服务器/url 加载到我的 MySQL 数据库中。 我不需要将 XML 文件本身保存在任何地方,除非这更容易/更快。

问题是,我需要每隔一小时左右运行一次,因为数据会不断更新,因此我也需要替换数据库中的数据。 XML 文件通常在 350mb 左右。

MySQL 表中的数据需要是可搜索的——我会知道 XML 的结构,所以可以先创建适合的表。

我想这个问题有几个部分:

  1. 自动化整个过程以每小时运行一次的最佳方法是什么?

  2. 从 url 下载/解析 xml (~350mb) 的最佳(最快?)方法是什么?以我可以的方式 -

  3. 将其加载到我自己的 mysql 表中,维护列/结构

【问题讨论】:

标签: php mysql xml


【解决方案1】:

1) PHP 脚本可以一直在后台运行,但这不是最佳方案,或者您可以使用 cronos(如果在 linux 上运行)或其他技术设置 php -q /dir/to/php.php 以使服务器为您提供帮助。 (您仍然需要访问服务器)

2) 您可以使用多个系统,如果您决定使用文件或使用修改后的 mySQL 访问来打开 TCP 连接,流式传输较小的包(16KB 就可以)和将它们流式传输到磁盘或其他连接上。

3) 移动如此庞大的数据并不难,但将它们存储在 mySQL 中并不浪费。在其中执行搜索甚至是最糟糕的。更新它正在试图杀死 mySQL 系统。

建议: 据我所知,您正在尝试从另一台服务器同步或备份数据。如果只有一个文件,那么使用 PHP 创建一个本地 .xml 就完成了。如果有多个文件,我仍然建议制作本地文件,因为您很可能正在处理非结构化数据:它们不适用于 mySQL。如果您使用数百个文件,并且需要搜索它们快速执行统计信息等等...考虑改变方法并阅读有关 hadoop 的信息。

MySQL BLOOB 或 TEXT 列仍然不支持超过 65KB,也许你知道另一种技术,但我从未听说过它,我永远不会建议这样做。如果您只是为了使用 SQL SEARCH 命令而尝试它,那么您选择了错误的路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多