1

2 つのフィールドを持つファイルに、5 億以上のレコードを含むデータがblobありますc_id

他の 2 つのファイルには、同じデータが別の形式で含まれています。BLOB を含むファイルと、レコードごとの c_ids のコンマ区切りリスト。

私は2つのテーブルを持っています:

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をロードします。

"SELECT id into outfile'/tmp/file1.csv' FIELDS TERMINATED BY';' LINES TERMINATED BY'\ n'from table_a where id> 0 limit 100000 "

'/tmp/file1.csv'でloadinfileを使用します。

于 2011-02-11T12:26:13.200 に答える