【问题标题】:Import XML into MySQL 5.1将 XML 导入 MySQL 5.1
【发布时间】:2010-09-22 15:02:20
【问题描述】:

请原谅我缺乏知识...我知道互联网上有很多与此相关的文档,但我仍然不明白。

我的情况是这样的:

我有一个 XML 文件需要导入并最终每天替换。

    <item>
        <model>AA311-Pink</model>
        <title>1122</title>
        <price>19.43</price>
        <category>cat</category>
        <loc>/AA311.html</loc>
        <image>/aa311.jpg</image>
        <description>Item Info</description>
        <weight>0.45</weight>
        <option_type>Color-Color</option_type>
        <option_value>Pink-Pink</option_value>
        <suggested_retail>51.50</suggested_retail>
        <special_handling/>
        <manufacturer>Tantus</manufacturer>
        <manufacturer_code>VB5074 and VB5067</manufacturer_code>
        <packaging>Retail Packaging</packaging>
        <in_stock>Yes</in_stock>
        <lastupdated>2008-11-05 16:35:56</lastupdated>

我需要自动更改一些列名并将它们导入到我的数据库中的多个表中。

例如,

    <item>
        <products_model>AA315</products_model>
        <products_name>name</products_name>
        <price>19.43</price>
        <category>cat</category>
        <loc>/AA315.html</loc>
        <products_image>aa315.jpg</products_image>
        <products_description>info</products_description>
        <products_weight>0.44</products_weight>
        <option_type/>
        <option_value/>
        <products_price>51.50</products_price>
        <special_handling/>
        <manufactures_name>Tantus</manufactures_name>
        <manufacturer_code>VA5104</manufacturer_code>
        <packaging>Retail Packaging</packaging>
        <products_status>Yes</products_status>
        <products_last_modified>2008-11-05 16:35:27</products_last_modified>

然后导入 MySQL DB

列: products_weight, products_model, products_image, products_price, products_last_modified

导入表“产品”

列: 产品描述、产品名称

导入表'product_description

另外,自动创建的 product_id 呢?我可以发送表结构的 SQL 输出。

我真的很感激帮助...如果他们愿意创建一个全自动程序将此文件导入我的数据库,我愿意支付一些费用;我正在使用 Zen Cart 来托管我的购物车。

【问题讨论】:

    标签: php sql xml


    【解决方案1】:

    您应该阅读一下 - 将 XML 加载到 MySQL http://dev.mysql.com/doc/refman/5.5/en/load-xml.html

    这允许你做这样的事情:

    mysql> LOAD XML LOCAL INFILE 'items.xml'
        ->   INTO TABLE item
        ->   ROWS IDENTIFIED BY '<item>';
    

    【讨论】:

    • 问题是指 MySQL 版本 5.1,其中不支持 LOAD XML
    【解决方案2】:

    无需付费,Using XML in MySQL 5.1 and 6.0 将回答您的大部分问题。另外,回到顶部并阅读整个页面,您可以使用 XML 和 MySQL 做很多事情。

    【讨论】:

      【解决方案3】:

      是的,谢谢 gx,http://web.archive.org/web/20100105150533/http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html#xml-5.1-importing 为我做了。我使用了那里提到的存储过程,但是如果你想导入到另一个表而不是't1',它有一个小错误。换行就行了

      SET @ins_text = CONCAT('INSERT INTO t1 (', ins_list, ') VALUES (', val_list, ')');
      

      SET @ins_text = CONCAT('INSERT INTO ', database_name, '.', table_name, ' (', ins_list, ') VALUES (', val_list, ')');
      

      通过以下方式执行程序

      call xmldump_load('<filename>', '<schema>', '<tablename>');
      

      在调用此过程之前,请确保要导入的文件是可访问的,例如在 mysql 的数据文件夹 (/var/lib/mysql/) 中,并使用具有 FILE 权限的用户执行它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-21
        • 2013-10-05
        • 2016-03-06
        • 2015-05-03
        • 2017-01-11
        • 1970-01-01
        • 2017-09-27
        • 2017-07-12
        相关资源
        最近更新 更多