将XML导入MySQL 5.1

时间:2008-11-17 02:46:37

标签: php sql xml

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

我的情况是这样的:

我有一个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

导入表'产品'

柱: products_description,products_name

导入表'product_description

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

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

3 个答案:

答案 0 :(得分: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>';

答案 1 :(得分:0)

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

答案 2 :(得分:0)

是的,谢谢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为我做了。我使用了那里提到的存储过程,但是如果你想导入另一个表而不是&#39; t1&#39;它有一个小错误。只需替换行

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 grant的用户执行它。