我有大量合理大小的XML文件,我想導入到MySQL表中。我運行的是Centos 6.3和MySQL 5.6,我最初嘗試過5.5,但遇到了問題,後來發現5.5中有一個關於空XML標籤的錯誤,所以我認爲這已經在5.6中解決了。MySQL 5.6 LOAD XML LOCAL INFILE和空的XML元素
XML文件本身包含一些我不感興趣的元素,所以插入數據的表包含的字段比XML文件中的元素少得多,但據我所知,這應該這不是一個問題。所有的字段名稱都對應於XML文件中的元素名稱。
我有這個表
CREATE TABLE `products` (
`sku` BIGINT(20) UNSIGNED NOT NULL,
`productId` BIGINT(20) UNSIGNED NOT NULL,
`name` VARCHAR(250) NULL,
`type` VARCHAR(250) NULL,
`format` VARCHAR(250) NULL,
`albumTitle` VARCHAR(250) NULL,
`artistName` VARCHAR(250) NULL,
`upc` BIGINT(15) UNSIGNED NULL,
`shortDescription` TEXT NULL,
`image` VARCHAR(100) NULL,
INDEX `Index 1` (`productId`),
INDEX `Index 2` (`name`),
INDEX `Index 3` (`type`),
INDEX `Index 4` (`format`)
)
的XML格式爲
<products> <product> ... </product> ... </products>
,我用這個來插入數據
LOAD XML LOCAL INFILE 'filename.xml' INTO TABLE products ROWS IDENTIFIED BY '<product>';
的正確的行數是bei ng插入,但數據庫中的所有字段均不包含任何內容或NULL。這看起來與我在5.5中看到的問題是一樣的,其中包含空標籤的XML例如<sku />
而不是<sku></sku>
不處理並導致這種結果。
我想我的問題是有什麼我可以做,以防止這種行爲。我是否正確地做這件事?
我曾想過試圖找到並替換所有空標籤,但這在我的Linux知識中超出了我的知識,所以也許這是一種選擇,有人可以提出一種實現方法,這將是一個很大的幫助,但任何幫助都會非常感謝。
也許與http://bugs.mysql.com/bug.php?id=67439 –