1

我有 500M+ 记录的数据,在一个有 2 个字段的文件中,blob并且c_id.

还有两个其他文件具有其他格式的相同数据: 一个具有 90M 唯一 blob 的文件。带有 blob 的文件,以及每条记录的 c_id 的逗号分隔列表。

我有两张桌子:

table_a: [id, blob] # id is auto-increment
table_b: [a_id, c_id]

对于每个唯一的 blob,必须在 table_a 中创建一条记录。对于文件中的每条记录,必须使用 table_a 的适当外键创建 table_b 中的记录。

我现在使用的解决方案是生成插入语句,使用last_insert_id,但是太慢了。我更喜欢使用 LOAD DATA INFILE,但自动增量 ID 使事情变得复杂。

例如

# Raw data
c_id   blob
   1   aaaa
   2   aaaa
   3   aaaa
   3   aaab
   4   aaac

期望的输出:

# Table_a
id  blob
 1  aaaa
 2  aaab
 3  aaac

# Table_b
c_id a_id
   1    1
   2    1
   3    2
   3    2
   4    3
4

1 回答 1

0

我不确定您如何填充 table_b 的“c_id”字段,但您可以执行以下操作:首先加载 table_a 中的所有数据,然后通过执行批处理查询来加载 table_b,例如:

“选择 id 到 outfile '/tmp/file1.csv' FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' from table_a where id > 0 limit 100000"

并在“/tmp/file1.csv”上使用加载文件。

于 2011-02-11T12:26:13.200 回答