我有大量相当大的 XML 文件,我想将它们导入 MySQL 表中。我正在运行 Centos 6.3 和 MySQL 5.6,我最初尝试了 5.5,但遇到了问题,后来发现了 5.5 中关于空 XML 标签的错误,所以我认为这已经在 5.6 中解决了。
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>';
正在插入正确数量的行,但数据库中的所有字段都不包含任何内容或为 NULL。这似乎与我在 5.5 中看到的问题相同,其中包含空标签的 XML 与未处理并导致这种结果<sku />
相反。<sku></sku>
我想我的问题是我能做些什么来防止这种行为。我这样做正确吗?
我曾考虑过尝试查找和替换所有空标签,但这超出了我在 Linux 中的知识范围,所以也许这是一种选择,有人可以提出一种实现它的方法,这将是一个很大的帮助,但任何帮助都将不胜感激。