load data infile 导入的txt数据第一行总是出现警告

时间:2021-05-17 03:41:54
测试的例子很简单
3个字段
c1 int类型 主键
c2 varchar
c3 varchar
用utf8格式

然后新建一个txt文件
输入对应的两行记录,之间用tab分隔
之后也另存为utf8格式

用 load data infile载入,总是会出现警告,
比如第一列是1,2,3,4,5
那么第一个1,总是会变成0

但是如果把第一列的数据类型换成字符就不会出现问题

百度后发现有类似的问题,但是没有满意的答案
不知道csdn的大神能否解释下



12 个解决方案

#1


检查你的文件格式,是不是用 utf 存储的,改成 ansi 的再试。 UTF文件前有两个特殊字节。

#2


引用 1 楼 ACMAIN_CHM 的回复:
检查你的文件格式,是不是用 utf 存储的,改成 ansi 的再试。 UTF文件前有两个特殊字节。


数据库中用的格式都是utf8,如果txt用ansi中文就是乱码,这个我试过了
所有把我txt文件格式改成了utf8,中文乱码的问题解决了,但是第一行的第一个int字段总是被改为0
我也考虑过是特殊前导字节的原因,那么怎么去除utf8这2个特殊字节呢

#3


顶,求解释呀!

#4


经过我反复实现 发现就是utf8文件有多余的前导字节导致的
如果直接用ascii,导入到utf8数据库字符就无法识别
难道数据库是utf8格式的就无法通过load data infile导入么???
到底怎么结局呢?utf8应该是很常见的数据库格式吧

#5


看下你auto_increment_increment 和 auto_increment_offset设置

#6


引用 5 楼 chengchow2001 的回复:
看下你auto_increment_increment 和 auto_increment_offset设置


+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
| auto_increment_offset    | 1     |
+--------------------------+-------+

#7


你可以写个脚本,把utf-8前面的3个字符去除掉。

#8


试试下面这条语句,指定字符类型:
load data infile '文件名'  into table 表名 character set utf8

#9


引用 7 楼 zy205817 的回复:
你可以写个脚本,把utf-8前面的3个字符去除掉。

怎么去掉呢??

#10


引用 8 楼 yzg001212 的回复:
试试下面这条语句,指定字符类型:
load data infile '文件名'  into table 表名 character set utf8


character set utf8这句是直接接在后面写么?这样写语法报错呀

#11


BOM的问题???
找个好点的文本编辑器,然后另存为,或者修改格式,改成UTF-8没BOM的那种

#12


引用 10 楼 yangfanzn 的回复:
Quote: 引用 8 楼 yzg001212 的回复:

试试下面这条语句,指定字符类型:
load data infile '文件名'  into table 表名 character set utf8


character set utf8这句是直接接在后面写么?这样写语法报错呀


怎么会报错呢?你把你执行的语句和报错信息帖出来

#1


检查你的文件格式,是不是用 utf 存储的,改成 ansi 的再试。 UTF文件前有两个特殊字节。

#2


引用 1 楼 ACMAIN_CHM 的回复:
检查你的文件格式,是不是用 utf 存储的,改成 ansi 的再试。 UTF文件前有两个特殊字节。


数据库中用的格式都是utf8,如果txt用ansi中文就是乱码,这个我试过了
所有把我txt文件格式改成了utf8,中文乱码的问题解决了,但是第一行的第一个int字段总是被改为0
我也考虑过是特殊前导字节的原因,那么怎么去除utf8这2个特殊字节呢

#3


顶,求解释呀!

#4


经过我反复实现 发现就是utf8文件有多余的前导字节导致的
如果直接用ascii,导入到utf8数据库字符就无法识别
难道数据库是utf8格式的就无法通过load data infile导入么???
到底怎么结局呢?utf8应该是很常见的数据库格式吧

#5


看下你auto_increment_increment 和 auto_increment_offset设置

#6


引用 5 楼 chengchow2001 的回复:
看下你auto_increment_increment 和 auto_increment_offset设置


+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
| auto_increment_offset    | 1     |
+--------------------------+-------+

#7


你可以写个脚本,把utf-8前面的3个字符去除掉。

#8


试试下面这条语句,指定字符类型:
load data infile '文件名'  into table 表名 character set utf8

#9


引用 7 楼 zy205817 的回复:
你可以写个脚本,把utf-8前面的3个字符去除掉。

怎么去掉呢??

#10


引用 8 楼 yzg001212 的回复:
试试下面这条语句,指定字符类型:
load data infile '文件名'  into table 表名 character set utf8


character set utf8这句是直接接在后面写么?这样写语法报错呀

#11


BOM的问题???
找个好点的文本编辑器,然后另存为,或者修改格式,改成UTF-8没BOM的那种

#12


引用 10 楼 yangfanzn 的回复:
Quote: 引用 8 楼 yzg001212 的回复:

试试下面这条语句,指定字符类型:
load data infile '文件名'  into table 表名 character set utf8


character set utf8这句是直接接在后面写么?这样写语法报错呀


怎么会报错呢?你把你执行的语句和报错信息帖出来