在新公司(模式可能會更改)中,我有一個表偶爾會從解析的csv文件接收批量插入(10k-200k行可能包含重複項)。對此最好的方法是什麼?C Sharp MysqlBulkInsert vs Muplitple插入查詢
目前,我執行以下操作:Insert Into table (Fields) Values (Values) ON DUPLICATE KEY UPDATE Set <Primary Key> = <Primary Key>
當插入記錄的數量增加時,這會花費太長的時間。
兩個選項我知道是
1)INSERT INTO table (Fields) VALUES (Values),(Values),(Values)....
關注的:
- Paramaterizaion,我將不得不宣告數以千計的命令參數,以避免SQL注入?
- 重複的鍵,是有辦法來避免該命令時,重複的主鍵在混合
2)使用MySqlBulkLoader
關注加入失敗:
- 列映射:從我讀過的csv需要用與表中相同的順序生成的字段(假設簡單的
DESCRIBE tablename
將給我正確的順序)。由於該公司是新的,並且表格結構已經改變。我不想忘記更新代碼並讓我的數據完整性受到影響。
任何幫助是極大的讚賞。
謝謝,我會用REPLACE讀取LOAD DATA INFILE。我不介意更改代碼,我擔心的是如果添加或替換列,bulkload仍然會在不同的列上執行查詢。 – Vee 2014-11-06 04:12:41
正確。正如我所說的,您可以在配置文件中按順序列出列的列表。所以當查詢將執行時,它會採取正確的列數和順序。 – Typist 2014-11-06 04:28:53