使用LOAD DATA INFILE将行分成多个记录

时间:2015-05-01 07:33:48

标签: mysql performance csv

我想加载一个具有以下格式的csv文件:

ID | Names  
1  | John, Jim  
2  | Ralph  
3  | Conrad, Alex, Sam  

我的SQL表中的数据应该是这样的:

ID | Name  
1  | John  
1  | Jim  
2  | Ralph  
3  | Conrad  
3  | Alex  
3  | Sam  

1)有没有办法直接使用LOAD DATA INFILE执行此操作? 2)如果不是,我假设我必须将csv文件加载到临时表,然后从中填充最终表。有关如何快速完成此任务的任何性能提示?

谢谢。

1 个答案:

答案 0 :(得分:0)

建议1

实现此目的的一种方法是以您想要的格式创建CSV。所以你需要一个循环遍历每一行。首先分开ID,然后分隔名称。然后将其插入新CSV,并将该csv上传到数据库。

所以你的查询看起来应该是这样的:

string query;

query = `"LOAD DATA LOCAL INFILE INTO TABLE xxx FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (ID, Names)"`

请注意如果您的ID是主键,则无法使用此功能,因为您无法在OP中描述两个相同的ID。

建议2 您可以尝试@sahrash shah建议的其他方法。