加载数据infile部分削减电话号码?

时间:2013-08-25 05:54:07

标签: mysql sql

我在我的电脑中创建了一个名为'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'的范围值。

原因是什么?如何解决这些问题?

1 个答案:

答案 0 :(得分:0)

尝试更改行分隔符。在Windows上,它通常是\r\n而不是\n,如果省略LINES TERMINATED BY子句,则默认为LOAD DATA INFILE "/tmp/1.txt" IGNORE INTO TABLE test LINES TERMINATED BY '\n'

{{1}}