Hãy thử điều này:
id2 = csv.reader(open(os.path.join(perf_dir,id_files[1])))
h = tuple(next(id2))
create = '''CREATE TABLE id2 (%s varchar, %s int PRIMARY KEY, %s int)''' % h
insert = '''INSERT INTO id2 (%s, %s, %s) VALUES (%%s, %%s, %%s)''' % h
...
cr.executemany(insert, id2)
Truyền lệnh sql chỉ một lần cho tất cả các hàng. Ngoài chi phí hiệu suất của việc phát hành các lệnh sql bổ sung, hãy lưu ý rằng kích thước của chính chuỗi sql (tính bằng byte) có thể nhỏ hơn kích thước của dữ liệu thực đang được kiểm tra.
Sử dụng id2 làm trình tạo không có mảng cũng sẽ tránh tải toàn bộ tập dữ liệu vào bộ nhớ.