PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

SQLAlchemy, Psycopg2 i Postgresql COPY

zaakceptowana odpowiedź jest poprawna, ale jeśli chcesz, aby coś więcej niż tylko komentarz EoghanM poszedł na poniższe, zadziałało dla mnie podczas KOPIOWANIA tabeli do 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 nie jest konieczne, ale jeśli masz zwyczaj tworzenia silnika i sesji w tym samym czasie, użyj raw_connection będziesz potrzebować ich rozdzielenia (chyba że istnieje jakiś sposób na dostęp do silnika poprzez obiekt sesji, którego nie znam). Ciąg sql dostarczony do copy_expert to również nie jedyna droga do tego, istnieje podstawowe copy_to funkcja, której możesz użyć z podzbiorem parametrów, które możesz wkleić do normalnego COPY Zapytać. Ogólna wydajność polecenia wydaje mi się szybka, kopiując tabelę ~20000 wierszy.

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. W Railsach nie można utworzyć bazy danych dla {adapter=>postgresql,

  2. Najlepsze praktyki replikacji PostgreSQL — część 1

  3. Przegląd parametrów połączenia libpq sslpassword w PostgreSQL 13

  4. Wzór na współczynnik korelacji Pearsona w SQL

  5. Połącz dwie kolumny i dodaj do jednej nowej kolumny