Tôi đang "chuyển đổi" tệp CSV lớn (~ 1.6 GB) và chèn các trường cụ thể của CSV vào cơ sở dữ liệu SQLite. Về cơ bản mã của tôi trông giống như:Python CSV to 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))
Mọi thứ hoạt động như tôi mong đợi với ngoại lệ ... CNTT mất một khoảng thời gian để xử lý. Tôi có mã hóa không chính xác không? Có cách nào tốt hơn để đạt được hiệu suất cao hơn và hoàn thành những gì tôi cần (chỉ cần chuyển đổi một vài trường của bảng CSV thành bảng SQLite)?
** EDIT - Tôi đã thử nhập trực tiếp csv vào sqlite như được đề xuất nhưng hóa ra tệp của tôi có dấu phẩy trong các trường (ví dụ: "My title, comma"
). Đó là tạo lỗi với quá trình nhập. Có vẻ có quá nhiều trong những lần xuất hiện để tự chỉnh sửa các tập tin ...
bất kỳ suy nghĩ khác ?? **
Đó là một tệp lớn. Mât bao lâu? – Blender
Có bao nhiêu bản ghi trùng lặp? Nếu có rất nhiều, có lẽ sẽ nhanh hơn để giữ một 'bộ bản ghi' cục bộ đã được chèn vào và bỏ qua cuộc gọi đến SQL hoàn toàn cho các bản sao. – kindall
[Ở đây] (http://dev.mysql.com/doc/refman/5.5/en/insert-speed.html) là một số mẹo tốc độ tải số lượng lớn của MySQL. – kindall