29

我在 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

当我试图通过使用提交它时

LOAD DATA INFILE 'Pickup_withoutproxy2.txt' INTO TABLE pickup;

它抛出错误

错误代码:1265。第 1 行的“PickupID”列的数据被截断

我正在使用 MySQL 5.2

4

9 回答 9

35

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

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

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

祝你好运。

于 2013-02-08T01:39:53.750 回答
14

您丢失了FIELDS TERMINATED BY ',',并且假设您默认使用制表符进行分隔。

于 2017-02-13T06:39:20.370 回答
5

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

于 2018-10-02T09:46:46.107 回答
4

我在具有ENUM值('0','1')的列中遇到了这个问题。
当我尝试保存新记录时,我为ENUM变量 分配了值0 。

对于 解决方案:我已将ENUM变量值从0更改为1,并将1更改为2

于 2017-04-04T20:02:01.927 回答
4

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

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

于 2018-12-10T16:41:12.123 回答
3

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

于 2020-11-10T21:30:21.960 回答
1

当我的数据在我的列中有额外的空格、制表符、换行符或其他字符时,我看到了相同的警告,decimal(10,2)为了解决这个问题,我必须从值中删除这些字符。

这是我的处理方式。

LOAD DATA LOCAL INFILE 'c:/Users/Hitesh/Downloads/InventoryMasterReportHitesh.csv' 
INTO TABLE stores_inventory_tmp 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(@col1, @col2, @col3, @col4, @col5)
SET sku = TRIM(REPLACE(REPLACE(REPLACE(REPLACE(@col1,'\t',''), '$',''), '\r', ''), '\n', ''))
, product_name = TRIM(REPLACE(REPLACE(REPLACE(REPLACE(@col2,'\t',''), '$',''), '\r', ''), '\n', ''))
, department_number = TRIM(REPLACE(REPLACE(REPLACE(REPLACE(@col3,'\t',''), '$',''), '\r', ''), '\n', ''))
, department_name = TRIM(REPLACE(REPLACE(REPLACE(REPLACE(@col4,'\t',''), '$',''), '\r', ''), '\n', ''))
, price = TRIM(REPLACE(REPLACE(REPLACE(REPLACE(@col5,'\t',''), '$',''), '\r', ''), '\n', ''))
;

我从这个答案中得到了暗示

于 2020-04-02T11:12:57.337 回答
1

我遇到了同样的问题,我的错误是我试图将一个我之前没有定义的值加载到ENUM().

For example, ENUM('sell','lend') and I was trying to load the value return to that column. I needed to load it, so I added it to the ENUM and load it again.

于 2021-06-04T17:59:18.980 回答
0

这个错误也可能是没有线的结果,

FIELDS SPECIFIED BY ','

(如果您使用逗号分隔字段)在您的 MySQL 语法中,如MySQL 文档的此页面中所述。

于 2016-09-28T03:06:19.873 回答