我想加载一个具有以下格式的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文件加载到临时表,然后从中填充最终表。有关如何快速完成此任务的任何性能提示?
谢谢。
答案 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建议的其他方法。