PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

SQLAlchemy, Psycopg2 và Postgresql COPY

câu trả lời được chấp nhận là đúng nhưng nếu bạn không chỉ muốn nhận xét của EoghanM, hãy tiếp tục, điều sau đây phù hợp với tôi trong việc SAO CHÉP một bảng sang CSV ...

from sqlalchemy import sessionmaker, create_engine

eng = create_engine("postgresql://user:[email protected]:5432/db")
ses = sessionmaker(bind=engine)

dbcopy_f = open('/tmp/some_table_copy.csv','wb')

copy_sql = 'COPY some_table TO STDOUT WITH CSV HEADER'

fake_conn = eng.raw_connection()
fake_cur = fake_conn.cursor()
fake_cur.copy_expert(copy_sql, dbcopy_f)

sessionmaker không cần thiết nhưng nếu bạn có thói quen tạo công cụ và phiên cùng lúc để sử dụng raw_connection bạn sẽ cần tách chúng ra (trừ khi có một số cách để truy cập công cụ thông qua đối tượng phiên mà tôi không biết). Chuỗi sql được cung cấp cho copy_expert cũng không phải là cách duy nhất để đạt được điều đó, có một copy_to cơ bản hàm mà bạn có thể sử dụng với tập hợp con các tham số mà bạn có thể dán vào một COPY bình thường Để truy vấn. Hiệu suất tổng thể của lệnh có vẻ nhanh đối với tôi, sao chép ra một bảng gồm ~ 20000 hàng.

http://initd.org/psycopg/docs/cursor.html#cursor.copy_tohttp://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.Engine.raw_connection



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các tính năng ẩn của PostgreSQL

  2. Tạo bản sao của cơ sở dữ liệu trong PostgreSQL

  3. Hạn chế chồng chéo ngày postgres

  4. Tại sao tôi không thể sử dụng bí danh cột trong biểu thức SELECT tiếp theo?

  5. PostgreSQL:Thả cơ sở dữ liệu PostgreSQL thông qua dòng lệnh