MySQL有一個不錯的語句:LOAD XML LOCAL INFILELOAD XML LOCAL INFILE
舉例來說,如果你有這樣的表:
CREATE TABLE person (
person_id INT NOT NULL PRIMARY KEY,
fname VARCHAR(40) NULL,
lname VARCHAR(40) NULL
);
和被叫下面的XML文件person.xml :
<list>
<person>
<person_id>1</person_id>
<fname>Mikael</fname>
<lname>Ronström</lname>
</person>
<person>
<person_id>2</person_id>
<fname>Lars</fname>
<lname>Thalmann</lname>
</person>
</list>
你可以這樣做:
LOAD XML LOCAL INFILE 'person.xml'
INTO TABLE person
ROWS IDENTIFIED BY '<person>';
我的問題是,如果XML文件中的列名與表中的不同,該怎麼辦?例如:
<list>
<person>
<PersonId>1</PersonId>
<FirstName>Mikael</FirstName>
<LastName>Ronström</LastName>
</person>
<person>
<PersonId>2</PersonId>
<FirstName>Lars</FirstName>
<LastName>Thalmann</LastName>
</person>
</list>
如何在不操縱XML文件的情況下用MySQL語句完成相同的操作?我到處搜索,但無法找到答案。
這是一個非常好的工作。但是,正如我對Bill Karwin的回答評論的那樣,LOAD XML語句存在另一個問題。它不接受最小化的空標籤,如 。你能想出解決這個問題的辦法嗎? –
stepanian
2011-12-27 19:05:29
我從來沒有使用過'LOAD XML',所以我只是對這個答案進行了有根據的猜測。所以不,不幸的是,我不知道這個問題的解決方案,除了以另一種語言(例如PHP)加載XML文件,解析它,然後將結果查詢發送到數據庫。 – 2011-12-27 19:10:40
僅供參考如果未能加載 標記是一個錯誤,並且已經修復:在MySQL 5.5.46之前,LOAD XML沒有正確處理 形式的空XML元素。 (錯誤#67542,錯誤#16171518)_。從[這裏](https://dev.mysql.com/doc/refman/5.5/en/load-xml.html) –
radman
2017-05-08 05:50:25