2011-01-24 23 views
2

ユーザがmysqlでデータをインポートする方法を教えてください。 問題は、通常、データを複数の関連テーブルに挿入する必要があることです。 severl 10sまたは100s of lineのインポート.csvをインポートするには時間がかかり、データベースに大きな負荷がかかります。今私は.csvを解析し、insetsを生成します(関係するテーブルにattrributesを設定する必要がある場合は複数の挿入があります)。 このようなことをどうやってやっていますか? サーバにファイルをロードして、サーバに定期的にデータを挿入することがありますか? すべてのアイデアは高く評価されています。 ありがとうございます。mysqlから.csvファイルを複数の関連テーブルに効率的にインポートする

答えて

0

このデータをすべて実際に挿入する必要がある場合は、選択肢があまりないと思います。

私は、アプリケーションとデータベース間のラウンドトリップの回数を減らすために、1つのINSERTで挿入する複数の行を使用することをお勧めします:

INSERT INTO mytable (....) 
VALUES (....), 
     (....); 

あなたが最初にデータを挿入する場合は、あなたが作成することができますすべてのデータが挿入された後のインデックスですが、もちろんオンラインで行っている場合(つまり、挿入プロセスが他のオペレーションと同時に実行されている場合)、すべてのプロセスでインデックスが共有されるため、インデックスを作成できません。

+0

私はこのようなデータを持っている:entritesテーブル ENTITY_ID ATTR1 ATTR2 attr3 ... N string_attributes は number_attributes が date_attribtutes はそれがありません – Oleg

+0

FIELD_ID値をENTITY_ID FIELD_ID値をENTITY_ID FIELD_ID値をentity_dエンティティの複数の行を挿入する方法はかなり明確ですが、最後に挿入されたエンティティのIDを取得する必要があるため、不可能です。 – Oleg

+0

具体的なエンティティの1つのタイプの属性は、複数の行の挿入が使用されます。 – Oleg

関連する問題