拥有使用InnoDB和外键的MySQL数据库......
我需要从一个巨大的CSV文件导入100MiB数据并将其拆分为两个表,记录必须如下所示
Table1 id|data|data2 Table2 id|table1_id|data3
其中Table2.table1_id
是引用Table1.id
的外键。
一个实例的MySQL序列看起来像这样
那太慢了......
如何使用文件加载到...?有高速结果的任何真实想法吗?
答案 0 :(得分:0)
您可以暂时将列data3
添加到Table1
(我还添加done
列,以区分来自CSV的记录和已存在/来自其他地方的记录):< / p>
ALTER TABLE Table1
ADD COLUMN data3 TEXT,
ADD COLUMN done BOOLEAN DEFAULT TRUE;
LOAD DATA
INFILE '/path/to/csv'
INTO TABLE Table1 (data, data2, data3)
SET done = FALSE;
INSERT
INTO Table2 (table1_id, data3)
SELECT (id, data3) FROM Table1 WHERE NOT done;
ALTER TABLE Table1
DROP COLUMN data3,
DROP COLUMN done;