PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

to_sql + sqlalchemy + + postgresql इंजन से कॉपी करें?

यह बिलकुल सच नहीं है। आप COPY FROM . का उपयोग करने के लिए इसे लागू कर सकते हैं kwarg method . के लिए अपना स्वयं का कार्य प्रदान करके वह to_sql स्वीकार करता है। DataFrame के लिए पंडों के दस्तावेज़ में मुख्य बिट .to_sql वह जगह है जहां method न केवल एक स्ट्रिंग हो सकती है, बल्कि एक कॉल करने योग्य भी हो सकती है। आप यही प्रदान करेंगे

उदाहरण के लिए:

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))

फिर, आप copy_from_method implement लागू कर सकते हैं कुछ इस तरह:

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

उदाहरण copy_from_method स्पष्ट रूप से कुछ काम का उपयोग कर सकता है- और आपको कुछ मामलों में सीएसवी लेखक के साथ उद्धृत करने और बचने से सावधान रहना होगा। लेकिन यह मोटा संस्करण किसी भी टाइपो/कॉपी पेस्ट त्रुटियों को छोड़कर अपेक्षाकृत अच्छी तरह से काम करना चाहिए (यह एक परियोजना में उपयोग किया जाने वाला एक छीन लिया गया संस्करण है)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आधार N में स्ट्रिंग प्रतिनिधित्व से मान को संख्यात्मक में बदलें

  2. PostgreSQL में दो कॉलम में से पहला नॉन-नल सेल चुनें

  3. मैं एक पोस्टग्रेस संग्रहीत प्रक्रिया कैसे लिखूं जो कुछ भी वापस नहीं करता है?

  4. एसक्यूएल:एसक्यूएल क्वेरी में ऑर्डर कैसे सेव करें?

  5. पोस्टग्रेएसक्यूएल pg_trgm धीमे का उपयोग करके फिर पूर्ण स्कैन