我正在「轉換」一個大的(約1.6GB)CSV文件,並將CSV的特定字段插入到SQLite數據庫中。基本上我的代碼如下所示:Python CSV到SQLite
import csv, sqlite3
conn = sqlite3.connect("path/to/file.db")
conn.text_factory = str #bugger 8-bit bytestrings
cur = conn.cur()
cur.execute('CREATE TABLE IF NOT EXISTS mytable (field2 VARCHAR, field4 VARCHAR)')
reader = csv.reader(open(filecsv.txt, "rb"))
for field1, field2, field3, field4, field5 in reader:
cur.execute('INSERT OR IGNORE INTO mytable (field2, field4) VALUES (?,?)', (field2, field4))
一切正常,我期望它有例外......它需要時間來處理數量驚人的。我編碼錯了嗎?是否有更好的方法來實現更高的性能並實現我所需要的(只需將CSV的幾個字段轉換爲SQLite表)?
**編輯 - 我試着直接將csv導入到sqlite中,正如所建議的,但事實證明我的文件在字段中有逗號(例如"My title, comma"
)。這是導入錯誤。它似乎有太多的事件的手動編輯文件...
任何其他的想法?**
這是一個很大的文件。多久時間? – Blender 2011-05-09 20:58:51
有多少重複記錄?如果數量很多,保留已經插入的記錄的本地「集合」可能會更快,並且跳過對重複項的SQL調用。 – kindall 2011-05-09 21:06:18
[Here](http://dev.mysql.com/doc/refman/5.5/en/insert-speed。HTML)是一些MySQL批量加載速度提示。 – kindall 2011-05-09 21:52:01