【发布时间】:2016-08-10 15:31:59
【问题描述】:
我在 mySQL 工作台查询中使用以下语句:
LOAD XML INFILE 'ProductFile.xml' INTO TABLE myDB.products
ROWS IDENTIFIED BY '<product>';
产生以下日志:
19:15:52 LOAD XML INFILE 'ProductFile.xml' INTO TABLE myDB.products ROWS IDENTIFIED BY '' 0 行受影响的记录:0 已删除:0 跳过:0 警告:0 0.000 秒
ProductFile.xml 包含以下格式的数据:
<?xml version="1.0" encoding="ISO-8859-1"?>
<products>
<product>
<name>Thing 1</name>
<productUrl>http://www.productsite.com/linkofsomesorttothing1</productUrl>
<ProductId>1234567890</ProductId>
</product>
<product>
<name>Thing 2</name>
<productUrl>http://www.productsite.com/linkofsomesorttothing2</productUrl>
<ProductId>1234567891</ProductId>
</product>
</products>
myDB.products 如下:
CREATE TABLE IF NOT EXISTS `myDB`.`Products` (
`ProductId` INT UNSIGNED NOT NULL,
`name` VARCHAR(70) NOT NULL,
`productUrl` TEXT NULL,
PRIMARY KEY (`ProductId`),
UNIQUE INDEX `ProductId_UNIQUE` (`ProductId` ASC)
) ENGINE=InnoDB COMMENT='\n';
谁能告诉我为什么它没有输出?
【问题讨论】:
-
更新:我在开始和结束标签之间的实际数据似乎有问题(上面的数据是我替换实际数据的示例数据)。一旦我隔离了导致问题的实际数据,我将发布更新。这有点奇怪,因为那里没有任何看起来像 html 标记的东西,所以这让我无法理解为什么解析器会感到困惑......
-
我发现一个问题,这似乎源于字符集。我想我需要在 LOAD 语句中指定对应于 ISO-8859-1 的字符集... latin1?
-
问题确实来自字符集。我需要在 LOAD 语句中指定对应于 ISO-8859-1 的字符集,即 CHARACTER SET latin1。现在可以了!