创建了一个表,命令如下:
CREATE TABLE tab_log
(
id         INT UNSIGNED NOT NULL AUTO_INCREMENT,
time       TIME NOT NULL,
ip         BIGINT UNSIGNED NOT NULL,
domain     VARCHAR(1000) NOT NULL,
htype      TINYINT UNSIGNED NOT NULL,
tld        TINYINT UNSIGNED NOT NULL,
qtype      TINYINT UNSIGNED NOT NULL,
flag       TINYINT UNSIGNED NOT NULL DEFAULT 32,
PRIMARY KEY(id),
CONSTRAINT htype_id FOREIGN KEY(htype) REFERENCES tab_htype_id(id),
CONSTRAINT tld_id FOREIGN KEY(tld) REFERENCES tab_tld_id(id),
CONSTRAINT qtype_id FOREIGN KEY(qtype) REFERENCES tab_qtype_id(id),
CONSTRAINT flag_id FOREIGN KEY(flag) REFERENCES tab_flag_id(id)
);批量载入数据:
LOAD DATA INFILE '2008_11_12.txt' INTO TABLE tab_log
FIELDS TERMINATED BY ' '
LINES TERMINATED BY '\r'
(time,ip,domain,htype,tld,qtype,flag);显示结果:
Query OK, 1 row affected, 1 warning (53.98 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 1mysql> show warnings;
+---------+------+-------------------------------------------+
| Level   | Code | Message                                   |
+---------+------+-------------------------------------------+
| Warning | 1265 | Data truncated for column 'flag' at row 1 | 
+---------+------+-------------------------------------------+
1 row in set (0.00 sec)不知道为什麽只能载入一条,我觉得列类型是没有问题的,是其他什么错误?请大家帮忙,看看是什么原因造成的。

解决方案 »

  1.   

    Data truncated for column 'flag' at row 1  如果你的2008_11_12.txt中只有两条数据,检查一下,有一条的flag对应位置的值是什么? flag     TINYINT UNSIGNED NOT NULL DEFAULT 32,  只支持 0-255
      

  2.   

    问题已解决,问题出在这句:“LINES TERMINATED BY '\r'” ,应该改为LINES TERMINATED BY '\n',UNIX系统只认'\n'。载入数据真是坎坷啊!~