mysql LOAD XML INFILE主要加载null值

时间:2018-03-08 20:24:45

标签: mysql xml database etl staging

我没有收到错误,但我收到了不良后果,并且不确定处理它的最佳方法。我有一个带有列表属性<tags>的xml文件,当我暂存时,我希望每个标记都是一行,这样可以更容易地插入到最终的3表中,其中帖子和标签具有NN关系和所有标签是独一无二的。

这是我运行的命令,它会创建所需数量的记录。

LOAD XML INFILE 'myfile.xml' INTO TABLE stage ROWS IDENTIFIED BY '<tag>';
Query OK, 11 rows affected (0.02 sec)
Records: 11  Deleted: 0  Skipped: 0  Warnings: 0

然而,当我运行select * from stage时,我得到以下结果集,这基本上是无用的。

username|real_name|post_date|profile_url|is_mod|allow_pm|followers|message|tag
RickDude|NULL     |NULL     |NULL       |NULL  |NULL    |NULL     |NULL   |#cool
RickDude|NULL     |NULL     |NULL       |NULL  |NULL    |NULL     |NULL   |#awesome
RickDude|NULL     |NULL     |NULL       |NULL  |NULL    |NULL     |NULL   |#money

非常感谢任何帮助。

sql table create script

CREATE TABLE stage(
    username NVARCHAR(255) NOT NULL,
    real_name NVARCHAR(255) NULL,
    post_date VARCHAR(50) NULL,
    profile_url NVARCHAR(255) NULL,
    is_mod VARCHAR(5) NULL, 
    allow_pm VARCHAR(5) NULL, 
    followers VARCHAR(11) NULL,
    message NVARCHAR(1000) NULL,
    tag NVARCHAR(255) NULL
);

xml文件

<posts>
    <post>
        <username>RickDude</username>
        <tags>
            <tag>#cool</tag>
            <tag>#awesome</tag>
            <tag>#money</tag>
        </tags>
        <real_name>Richard Sanchez</real_name>
        <post_date>Aug. 8, 2015</post_date>
        <profile_url>https://example.com/profiles/RickDude</profile_url>
        <is_mod>True</is_mod>
        <allow_pm>True</allow_pm>
        <followers>1000001</followers>
        <message>The message text here...</message>
    </post>
    <post>
        <username>Smorty</username>
        <tags>
            <tag>#noob</tag>
            <tag>#awesome</tag>
        </tags>
        <real_name>Morty Smith</real_name>
        <post_date>Apr. 1, 2017</post_date>
        <profile_url>https://example.com/profiles/Smorty</profile_url>
        <is_mod>True</is_mod>
        <followers>537</followers>
        <allow_pm>True</allow_pm>
        <message>The message text here...</message>
    </post>
    <post>
        <username>TheRealJerry</username>
        <allow_pm>True</allow_pm>
        <tags>
            <tag>#colorwheel</tag>
            <tag>#weird</tag>
            <tag>#huh</tag>
            <tag>#yumadbro</tag>
            <tag>#firstpost</tag>
            <tag>#plutoisaplanet</tag>
            </tags>
        <real_name>Jerry Smith</real_name>
        <post_date>May. 18, 2017</post_date>
        <profile_url>https://example.com/profiles/TheRealJerry</profile_url>
        <is_mod>False</is_mod>
        <followers>3</followers>
        <message>The message text here...</message>
    </post>
</posts>

0 个答案:

没有答案