mysql - 在 MySql 中加载带有位字段的 XML

标签 mysql

我有下表:

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/

相关文章:

javascript - 使用 PHP 的服务器发送事件

mysql/mariadb - 创建表列索引不工作

mysql - Docker mysql 错误 1396 (HY000) : Operation CREATE USER failed for 'root' @'%'

mysql - MYSQL中JOIN后如何删除重复列值?

php - 代码不工作,将 MySQL 结果排序到页面中

c# - 带有.net的Web服务无法连接到互联网信息服务中的mysql数据库

java - 如何在 Oracle Sql Developer 中设置 Jdbc 路径?

python - MySQL - 匹配两个包含巨大数据的表并找到相似的数据

php - MYSQL 从表中选择,获取表中最新/最后 10 行

mysql - SELECT 语句有时不适用于波斯语内容