PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

to_sql + sqlalchemy + salin dari + mesin postgresql?

Ini tidak sepenuhnya benar. Anda dapat menerapkan ini untuk menggunakan COPY FROM dengan menyediakan fungsi Anda sendiri untuk kwarg method bahwa to_sql menerima. Bit kunci dalam dokumentasi Pandas untuk DataFrame .to_sql adalah di mana method tidak hanya bisa berupa string, tetapi juga dapat dipanggil. Itulah yang akan Anda berikan

Misalnya:

from csv import (writer as csv_writer, QUOTE_MINIMAL)
from io import StringIO

def some_function(df, connection):        
    try:
        frame.to_sql(
            'my_table',
            connection,
            schema='public',
            if_exists='append',
            index=False,
            method=copy_from_method)
    except Exception as err:
        print('Got an error ({})'.format(str(err))

Kemudian, Anda dapat menerapkan copy_from_method seperti ini:

def copy_from_method(table, conn, keys, data_iter, pre_truncate=False, fatal_failure=False):
    "Custom method for pandas.DataFrame.to_sql that will use COPY FROM"""

    dbapi_conn = conn.connection
    cur = dbapi_conn.cursor()

    s_buf = StringIO()
    writer = csv_writer(s_buf, quoting=QUOTE_MINIMAL)
    writer.writerows(data_iter)
    s_buf.seek(0)

    columns = ', '.join('"{}"'.format(k) for k in keys)
    table_name = '{}.{}'.format(
        table.schema, table.name) if table.schema else table.name

    sql_query = 'COPY %s (%s) FROM STDIN WITH CSV' % (table_name, columns)
    cur.copy_expert(sql=sql_query, file=s_buf)
    return cur.rowcount

Contoh copy_from_method bisa menggunakan beberapa pekerjaan dengan jelas - dan Anda harus berhati-hati dengan mengutip dan melarikan diri dengan penulis CSV dalam beberapa kasus. Tetapi versi kasar ini seharusnya bekerja dengan relatif baik, kecuali kesalahan ketik/salin tempel (ini adalah versi sederhana yang saya gunakan dalam sebuah proyek)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa menanyakan semua data saya dalam jarak 5 meter?

  2. PostgreSQL DESCRIBE TABLE Setara

  3. Memasang ekstensi hstore dalam tes hidung Django

  4. Mengapa bahkan menggunakan *DB.exec() atau pernyataan yang disiapkan di Golang?

  5. Cara melakukan operasi pembaruan pada kolom tipe JSONB di Postgres 9.4