Tôi đang tìm cách hiệu quả nhất để chèn hàng loạt hàng triệu bộ dữ liệu vào cơ sở dữ liệu. Tôi đang sử dụng Python, PostgreSQL và psycopg2.Psycopg2, Postgresql, Python: Cách nhanh nhất để chèn hàng loạt
Tôi đã tạo danh sách dài các loại hoa tulip cần được chèn vào cơ sở dữ liệu, đôi khi với các công cụ sửa đổi như hình học Simplify
.
Cách ngây thơ để làm điều đó sẽ là chuỗi định dạng danh sách INSERT
báo cáo, nhưng có ba phương pháp khác mà tôi đã đọc về:
- Sử dụng
pyformat
binding style để chèn tham số - Sử dụng
executemany
trên danh sách các bộ dữ liệu và - Bằng cách ghi kết quả vào một tệp và sử dụng
COPY
.
Dường như cách đầu tiên hiệu quả nhất, nhưng tôi sẽ đánh giá cao thông tin chi tiết và đoạn mã của bạn cho tôi biết cách thực hiện đúng.
Sử dụng con trỏ ps.copg2 của con trỏ.copy_from tệp được khách hàng xử lý. Nó thậm chí không cần phải là một tập tin hệ thống tập tin: bất kỳ đối tượng giống như tập tin python hoạt động tốt. Kiểm tra http://initd.org/psycopg/docs/cursor.html#cursor.copy_from – piro
Trong trường hợp đó, thật thú vị khi xem nó được chèn vào cơ sở dữ liệu như thế nào - Tôi đã được COPYSQL ấn tượng chỉ đọc từ máy chủ hệ thống tệp cục bộ và không có cách nào để sao chép hàng loạt tệp qua sử dụng ứng dụng khách. –
Nó cũng có thể đọc từ 'STDIN', có nghĩa là dữ liệu đến từ ứng dụng khách. Xem tài liệu lệnh sao chép: http://www.postgresql.org/docs/8.4/static/sql-copy.html – piro