2013-03-18 58 views
0

我有一些XML,我試圖直接加載到MySQL表中。我對「ROWS IDENTIFIED BY」的想法相當滿意,但我堅持要保存元素的標籤和元素的文本值。我會盡力解釋:如果我的行沒有「名稱」,我可以使用MySQL LOAD XML LOCAL INFILE嗎?

我創建了一個MySQL表:

CREATE TABLE stat (
    Type VARCHAR(40) NOT NULL, 
    uID VARCHAR(40) NOT NULL, 
    value VARCHAR(40), 
    created TIMESTAMP, 
    PRIMARY KEY (Type, uID) 
); 

,現在我想加載XML是格式爲:

<Employee uID="p17336"> 
    <Name>Joe Bloggs</Name> 
    <Stat Type="first_name">Joe</Stat> 
    <Stat Type="last_name">Bloggs</Stat> 
    <Stat Type="birth_date">1985-07-26</Stat> 
    </Employee> 

我想是每個Stat元素的'Type'在MySQL中填充'Type'列(工作正常),然後是元素的實際文本(例如'Joe')來填充'value'列。我怎樣才能做到這一點?目前我正在嘗試:

LOAD XML LOCAL INFILE 'C:/dev/Sample/employees.xml' 
INTO TABLE stat 
ROWS IDENTIFIED BY '<Stat>'; 

而且我正在填寫正確填充的所有字段,除了'值',它是NULL。任何想法非常感謝!

回答

0

由於LOAD XML Syntax下記載:

本聲明支持三種不同的XML格式:

  • 列名屬性和列值的屬性值:

    <row column1="value1" column2="value2" .../>
  • 列名稱作爲標籤和列值作爲這些標籤的內容:

    <row> 
        <column1>value1</column1> 
        <column2>value2</column2> 
    </row>
  • 列名是<field>標籤name屬性,和值是這些標籤的內容:

    <row> 
        <field name='column1'>value1</field> 
        <field name='column2'>value2</field> 
    </row>

    這是mysqldump通過其他MySQL工具使用的格式,例如。

因爲你的XML是沒有這些支持的格式,你必須使用一些其他的工具來分析它。

+0

我在mysql文檔上看到了這個,我希望能有一些映射技巧,我可以做到解決它......我決定使用hyperjaxb來創建jaxb映射和hibernate實體映射,並使用這些加載和存儲。 – Matt 2013-04-22 13:12:53