MySQL命令'LOAD DATA INFILE'有问题。我需要将第一行设置为标题

时间:2012-05-29 16:46:49

标签: mysql

这是我的代码。

TRUNCATE TABLE dsw_data.inventory_sss2;
SET AUTOCOMMIT=0; 
LOAD DATA INFILE 'c:/inetpub/wwwroot/Data/inventory_sss.csv' INTO TABLE dsw_data.inventory_sss2 FIELDS TERMINATED BY  ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r'; 
COMMIT;

以下是产生的错误

Error Code: 1366. Incorrect integer value: 'CUST NO' for column 'sno' at row 1"

我希望CSV的第一行是表格标题,其他行是数据。

另外,如何指定哪些行应该是数字(如果需要,我不确定)。

我在这里搜索过google,但是还没有看到代码示例来设置我想要的标题。

2 个答案:

答案 0 :(得分:3)

要回答您的第一个问题,您需要使用IGNORE 1 LINES语法:

TRUNCATE TABLE dsw_data.inventory_sss2;
SET AUTOCOMMIT=0; 
LOAD DATA INFILE 'c:/inetpub/wwwroot/Data/inventory_sss.csv' 
INTO TABLE dsw_data.inventory_sss2 
FIELDS TERMINATED BY  ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\r'; 
IGNORE 1 LINES
COMMIT;

更新为显式命名列并将主键设置为null以使用自动增量:

TRUNCATE TABLE dsw_data.inventory_sss2;
SET AUTOCOMMIT=0; 
LOAD DATA INFILE 'c:/inetpub/wwwroot/Data/inventory_sss.csv' 
INTO TABLE dsw_data.inventory_sss2 
FIELDS TERMINATED BY  ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\r'; 
IGNORE 1 LINES
(your_first_column, your_second_column,...)
SET sno = NULL
COMMIT;

答案 1 :(得分:0)

添加

IGNORE 1 LINES

到您的LOAD DATA查询:

LOAD DATA INFILE 'c:/inetpub/wwwroot/Data/inventory_sss.csv' INTO TABLE dsw_data.inventory_sss2 FIELDS TERMINATED BY  ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r' IGNORE 1 LINES;

您不需要指定哪些字段是数字字段,它将基于您要加载的表格。