2014-09-05 117 views
0
1列

偏移我从csv文件导入我的数据是这样的:导入CSV到MySQL - 通过

LOAD DATA LOCAL INFILE "c:\myfile.csv" INTO TABLE historic FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; 

这个近乎完美的作品。我的表格有一个不同的行,第一个:自动递增的id列。否则csv文件和MySQL表完美匹配。当我运行上面的命令时,它将csv中的第一列放入id字段中。它希望它真的进入第二个。

有没有办法可以修改上述语句来指定列或只是将其偏移1? (跳过导入的第一列)。

+0

您是否尝试将其首先加载到临时表中,并将select用于最终表中?所以你可以指定你想要的列。 – vinibarr 2014-09-05 17:49:54

+0

@vinibarr不,我没有。我想先看看这是否可能在一个命令。 – KickingLettuce 2014-09-05 17:50:44

+0

我知道你可以忽略来自源文件的列,但忽略你命运表上的列,我认为是不可能的。 – vinibarr 2014-09-05 17:51:44

回答

1

您可以加载数据specifing,你要使用到表中的顺序列: LOAD DATA LOCAL FILE'/tmp/test.txt'INTO TABLE historic (name_field1,name_field2,name_field3 ...);

或者,如果你愿意,你可以先加载到一个临时表和使用select into语句将其LAOD到你最后的表(这是慢)。

2

您可以选择Name以按LOAD DATA填充柱,根本忽略你的id柱:

LOAD DATA LOCAL INFILE "c:\myfile.csv" INTO TABLE historic 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' 
(column2, colum3, column4, column5, ...)