错误1265.尝试从txt文件加载数据时,列的数据被截断

And*_*rey 13 mysql csv

我在mysql表的表中看起来像

create table Pickup
(
PickupID int not null,
ClientID int not null,
PickupDate date not null,
PickupProxy  varchar (40) ,
PickupHispanic bit default 0,
EthnCode varchar(2),
CategCode varchar (2) not null,
AgencyID int(3) not null,

Primary Key (PickupID),
FOREIGN KEY (CategCode) REFERENCES Category(CategCode),
FOREIGN KEY (AgencyID) REFERENCES Agency(AgencyID),
FOREIGN KEY (ClientID) REFERENCES Clients (ClientID),
FOREIGN KEY (EthnCode) REFERENCES Ethnicity (EthnCode)
);

sample data from my txt file 
1065535,7709,1/1/2006,,0,,SR,6
1065536,7198,1/1/2006,,0,,SR,7
1065537,11641,1/1/2006,,0,W,SR,24
1065538,9805,1/1/2006,,0,N,SR,17
1065539,7709,2/1/2006,,0,,SR,6
1065540,7198,2/1/2006,,0,,SR,7
1065541,11641,2/1/2006,,0,W,SR,24
Run Code Online (Sandbox Code Playgroud)

当我试图通过使用提交它

LOAD DATA INFILE 'Pickup_withoutproxy2.txt' INTO TABLE pickup;
Run Code Online (Sandbox Code Playgroud)

它会引发错误

错误代码:1265.第1行的"PickupID"列截断了数据

我正在使用MySQL 5.2

sge*_*des 17

此错误表示Pickup_withoutproxy2.txt文件中的至少一行在其第一列中的值大于int(您的PickupId字段).

Int只能接受-2147483648到2147483647之间的值.

查看您的数据,看看发生了什么.如果您的txt文件非常大且难以查看,您可以尝试将其加载到具有varchar数据类型的临时表中.很容易检查一旦加载到数据库中的int.

祝好运.

  • 或第一行为空 (6认同)

Blu*_*ron 9

你错过了FIELDS TERMINATED BY ','它,假设你默认用制表符分隔.


iva*_*zer 8

我有同样的问题。我想编辑表结构中的 ENUM 值。问题是因为之前保存的行和新的 ENUM 值不包含保存的值。

解决方案是更新 MySql 表中旧的保存行。


Lia*_*air 7

我在尝试将现有varchar列转换为enum. 对我来说,问题是该列的现有值不属于 的enum可接受值列表。因此,如果您enum只允许值,例如表中('dog', 'cat')有一行,则将因此错误而失败。birdMODIFY COLUMN


Ser*_*yTs 7

原因是mysql期望文本文件中最后一个指定列之后的行结束符号,该符号是char(10)或'\\n'。取决于创建文本文件的操作系统,或者如果您自己创建文本文件,它可以是其他组合(Windows 使用 '\\r\\n' (chr(13)+chr(10)) 作为行分隔符)。因此,如果您使用 Windows 生成的文本文件,请将以下后缀添加到 LOAD 命令中:\xe2\x80\x9c LINES TERMINATED BY '\\r\\n' \xe2\x80\x9d。否则,请检查文本文件中行的分隔方式。在默认 mysql 上,期望 char(10) 作为行分隔符。

\n