mysql - 从 mysql 中的位字段中的 CSV 加载数据

标签 mysql csv sql-insert

在 `MySQL' 中将值插入 bit(1) 类型的列中的正确语法是什么?

我的列定义是:

payed bit(1) NOT NULL

我正在从 csv 加载数据,其中数据保存为 01。 我尝试使用以下方法进行插入:

b'value' or 0bvalue (example b'1' or 0b1)

manual 所示.

但我一直收到这个错误:

 Warning | 1264 | Out of range value for column 'payed' at row 1

插入值的正确方法是什么?

我没有手动插入,而是从 csv(使用 load data infile)加载数据,其中列的数据是 01

这是我的加载查询,我已经重命名了隐私问题的字段,该定义没有错误:

load data local infile 'input_data.csv' into table table
fields terminated by ',' lines terminated by '\n'
(id, year, field1, @date2, @date1, field2, field3, field4, field5, field6, payed, field8, field9,   field10, field11, project_id)
set
date1 = str_to_date(@date1, '%a %b %d %x:%x:%x UTC %Y'),
date2 = str_to_date(@date2, '%a %b %d %x:%x:%x UTC %Y');
show warnings;

这是我的 CSV 的示例行:

    200014,2013,0.0,Wed Feb 09 00:00:00 UTC 2014,Thu Feb 28 00:00:00 UTC 2013,2500.0,21,Business,0,,0,40.0,0,PROSPECT,1,200013

更新: 我没有找到使用 bit 的解决方案,所以我将列数据类型从 bit 更改为 tinyint 以使其工作。

最佳答案

我终于找到了解决方案,并将其发布在这里以供将来引用。我在 mysql load data manual page 中找到了帮助.

所以出于测试目的,我的表结构是:

+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   | PRI | NULL    |       |
| nome   | varchar(45) | YES  |     | NULL    |       |
| valore | bit(1)      | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

我的csv 测试文件是:

1,primo_valore,1
2,secondo_valore,0
3,terzo_valore,1

csv 加载到表中的查询是:

 load data infile 'test.csv' into table test
    fields terminated by ',' lines terminated by '\n'
    (id, nome, @valore) set
       valore=cast(@valore as signed);
    show warnings;

如您所见,加载 csv 您需要执行强制转换 cast(@valore as signed) 并在您的 csv 中可以使用整数符号10来表示值。这是因为 BIT 值无法使用二进制表示法加载(例如,b'011010')。

关于mysql - 从 mysql 中的位字段中的 CSV 加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15683809/

相关文章:

MySQL - 如何插入具有多对多关系的表

sql - Postgresql:从 excel 列中插入许多值

php - 使用 PHP “insert multiple” 同时插入所有 4 行

java - 语句关闭后不允许进行任何操作。 Java, MySQL

mysql - linux命令行根据mysql结果集压缩文件

MySQL 脚本正在执行注释行

python - 使用 Python 从多个文本文件中提取列

PHP MYSQL CONCAT,字符串开头包含逗号

java - Spring Batch FlatFileItemReader 继续错误数量的 token

python - 使用 python 脚本删除一个逗号