0

各テーブルの ID キーが auto_incrementing である一連のテーブルがあります。現在、私のユーザーは、単一の csv フラット ファイルから異なるキーを持つ一連の外部データをインポートしたいと考えています。

これを行う最善の方法は、テーブルをロックし、各テーブルの auto_increment 列の次の値を取得してから、挿入する行ごとに既存の主キーを新しい AI 値に交換することだと思います。インポートするデータには複数のテーブルと複数のキー関係があるため、これは非常に見苦しくなります。

このような問題を処理する方法に関する他のアイデアはありますか? おそらくストアドプロシージャ?アイデアをありがとう。

4

1 に答える 1

1

old_key という名前のインポート先のテーブルに新しいフィールドを追加し、csv を一時テーブルにインポートしてから、次のようなことを行います。

insert into mytable(firstname, lastname, old_key) 
select fname, lname, old_key from temp_table

自動インクリメントである mytable_id フィールドは通常どおり機能し、他の外部キー関係のマッピングに使用できる old_key と新しい mytable_id が得られます。作業が完了したら、一時テーブルを削除できます

于 2010-02-18T09:41:38.103 に答える