我在我的电脑中创建了一个名为'test'的表,如下所示。
create table test(
telnum varchar(20) not null,
reg_date datetime not null default '0000-00-00 00:00:00',
remarks text,
primary key(telnum)
);
我上传了一个名为1.txt的文件到'test'表中。 1.txt的内容如下:
01011112222 01022223333 01033334444
'load data infile'语法如下所示:
load data infile "c:/temp/1.txt"
ignore into table test;
但是有一个问题。
每个电话号码都被剪下来了。
Query OK, 3 rows affected, 3 warnings (0.00 sec) Records: 3 Deleted: 0 Skipped: 0 Warnings: 3 mysql> select * from test; +-------------+---------------------+---------+ | telnum | reg_date | remarks | +-------------+---------------------+---------+ |12222 | 0000-00-00 00:00:00 | |23333 | 0000-00-00 00:00:00 | |34444 | 0000-00-00 00:00:00 | +-------------+---------------------+---------+ 3 rows in set (0.00 sec)
11个字符中只剩下5个字符。 6个字符消失了。
第二个问题是'警告'。警告的原因如下。
mysql> show warnings; +---------+------+---------------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------------+ | Warning | 1264 | Out of range value for column 'reg_date' at row 1 | | Warning | 1264 | Out of range value for column 'reg_date' at row 2 | | Warning | 1264 | Out of range value for column 'reg_date' at row 3 | +---------+------+---------------------------------------------------+ 3 rows in set (0.00 sec)
我没有把任何东西放到reg_date字段中。 但是消息显示超出列'reg_date'的范围值。
原因是什么?如何解决这些问题?
答案 0 :(得分:0)
尝试更改行分隔符。在Windows上,它通常是\r\n
而不是\n
,如果省略LINES TERMINATED BY
子句,则默认为LOAD DATA INFILE "/tmp/1.txt"
IGNORE INTO TABLE test
LINES TERMINATED BY '\n'
{{1}}