新しい会社(スキーマは変更される可能性があります)では、解析されたcsvファイルから一括挿入(重複が含まれる可能性のある10k〜200k行)を受け取ることがあるテーブルがあります。これに対する最善のアプローチは何でしょうか?
現在、私は次のことを行っています。Insert Into table (Fields) Values (Values) ON DUPLICATE KEY UPDATE Set <Primary Key> = <Primary Key>
特に挿入するレコードの数が増えると、時間がかかりすぎます。
私が知っている2つのオプションは
1) INSERT INTO table (Fields) VALUES (Values),(Values),(Values)....
懸念事項:
2)使用 MySqlBulkLoader
懸念事項:
DESCRIBE tablename
正しい順序が得られると仮定します)。会社が新しく、テーブル構造がすでに変更されているため。コードを更新し、データの整合性を損なうことを忘れたくありません。どんな助けでも大歓迎です。
1つのオプションは、REPLACE構文でLOAD DATAINFILEを使用することです。REPLACE構文は、既存の行を、既存の行の主キーまたは一意のインデックスと同じ値を持つ行の入力行に置き換えます。
例:
LOAD DATA INFILE '/tmp/your_data.csv' REPLACE
INTO TABLE your_table (column1, column2, ...)
あなたが言うように、あなたのデータベーススキーマは頻繁に変更されます。構成から列のリストを読み取ることができます。そうすれば、dbスキーマで何かが変更されたときに、コードを変更する必要がなくなります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加