如何使用mysql LOAD XML LOCAL INFILE导入xml文件

时间:2014-05-29 11:18:46

标签: mysql xml

我有一个像这样的xml文件:

  

的test.xml

<?xml version="1.0" encoding="utf-8" ?>
<plugin name="tree">
    <title>Test</title>
    <description>some description</description>
    <files>
        <file>test.tmp</file>
    </files>
    <install><![CDATA[
        global $test;
    ]]></install>
    <hooks>
        <hook name="hookname"><![CDATA[
            global $local;
        ]]></hook>
    </hooks>

    <phrases>
        <phrase key="category"><![CDATA[Show categories]]></phrase>
    </phrases>
</plugin>

我喜欢将它导入MySQL表格,例如&table;&#39;

CREATE TABLE mytable (plugin varchar(255),title varchar(255),description varchar(255), file varchar(255),install varchar(255),hook varchar(255),phrase varchar(255));

我使用下面的命令

LOAD XML LOCAL INFILE 'test.xml' 
INTO TABLE mytable(plugin,title,description,file,install,hook,phrase);

它成功运行,但有0行!

  

查询已成功实施,已有0行   影响。

谢谢

2 个答案:

答案 0 :(得分:12)

包含此行ROWS IDENTIFIED BY '<plugin>'。你的查询看起来应该是

LOAD XML LOCAL INFILE "D:\\test.xml"
INTO TABLE mytable
ROWS IDENTIFIED BY '<plugin>';

看起来你的XML文件形成不正确,所以即使插入了1行;所有值都不会被提取(保持NULL)。

如下所示进行少量更改

创建表格结构

CREATE TABLE mytable (
plugin_name varchar(255),
title varchar(255),
description varchar(255), 
`file` varchar(255),
`install` varchar(255),
hook varchar(255),
phrase varchar(255));

更改您的XML文件

<?xml version="1.0" encoding="utf-8" ?>
<plugin plugin_name="tree">
    <title>Test</title>
    <description>some description</description>
         <file>test.tmp</file>
    <install>![CDATA[
        global $test;
    ]]</install>
        <hook name="hookname">![CDATA[
            global $local;
        ]]</hook>
        <phrase key="category">![CDATA[Show categories]]</phrase>
</plugin>

现在,如果您使用

LOAD XML LOCAL INFILE "D:\\test.xml"
INTO TABLE mytable
ROWS IDENTIFIED BY '<plugin>';

所有数据都被提取得很好

enter image description here

答案 1 :(得分:0)

除了上面给出的答案外;我只是想补充一下,数据库字段的字符大小写必须与XML字段的大小写相同。否则,加载XML将无法导入该特定列。