我有下表:
CREATE TABLE `tmp_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`t` bit(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1$$
还有一个名为“data.xml”的 xml 文件,其中包含 1 行:
<list><row t="0" /></list>
当我运行以下命令时:
LOAD XML LOCAL INFILE 'c:/temp/data.xml' INTO TABLE `tmp_table`
运行此命令后,我得到一行,其中 t 列的值为“1”并出现警告:
LOAD XML LOCAL INFILE 'c:/temp/data.xml' INTO TABLE `tmp_table` 1 row(s) affected, 1 warning(s):
1264 Out of range value for column 't' at row 1
Records: 1 Deleted: 0 Skipped: 0 Warnings: 1 0.000 sec
如何为 xml 文档中的位字段加载 0
?
最佳答案
MySQL 建议下一步:
无法使用二进制表示法加载 BIT 值(例如 b'011010')。要解决此问题,请将值指定为常规整数并使用 SET 子句来转换它们,以便 MySQL 执行数字类型转换并将它们正确加载到 BIT 列中:
http://dev.mysql.com/doc/refman/5.5/en/load-data.html
我尝试过这个查询:
LOAD XML LOCAL INFILE 'data.xml' INTO TABLE `tmp_table`
ROWS IDENTIFIED BY '<row>'
(@var1)
SET t = CAST(@var1 AS SIGNED);
...我收到了奇怪的警告消息 -“列 't' 不能为空”。
希望这对您有用;否则,我认为,你应该向 bugs.mysql.com 写一个请求
关于mysql - 在 MySql 中加载带有位字段的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8920995/