Re: Testing of a fast method to bulk insert a Pandas DataFrame into Postgres

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Shaozhong SHI <shishaozhong(at)gmail(dot)com>
Cc: pgsql-general <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: Testing of a fast method to bulk insert a Pandas DataFrame into Postgres
Date: 2021-10-04 16:50:52
Message-ID: 1b86e754-0317-84df-848f-9218e8df73e9@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-sql

On 10/4/21 9:20 AM, Shaozhong SHI wrote:
> Hello, Adrian Klaver,
>
> Pandas version is 0.23.0.

The reason the below does not work is method did not show up until
pandas 0.24.0.

>
> I used the following code:
>
> def psql_insert_copy(table, conn, keys, data_iter):
>     # gets a DBAPI connection that can provide a cursor
>     dbapi_conn = conn.connection
>     with dbapi_conn.cursor() as cur:
>         s_buf = StringIO()
>         writer = csv.writer(s_buf)
>         writer.writerows(data_iter)
>         s_buf.seek(0)
>
>         columns = ', '.join('"{}"'.format(k) for k in keys)
>         if table.schema:
>             table_name = '{}.{}'.format(table.schema, table.name
> <http://table.name>)
>         else:
>             table_name = table.name <http://table.name>
>
>         sql = 'COPY {} ({}) FROM STDIN WITH CSV'.format(
>             table_name, columns)
>         cur.copy_expert(sql=sql, file=s_buf)
> engine = create_engine('postgresql+psycopg2://:5432/postgres')
> try:
>     df.to_sql('test1', engine, schema='public', if_exists='append',
> index=False, method=psql_insert_copy)
>
> I could not find obvious reasons.

>
> Regards,
>
> David
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Israel Brewster 2021-10-04 17:09:54 Re: Growth planning
Previous Message Rob Sargent 2021-10-04 16:46:31 Re: Growth planning

Browse pgsql-sql by date

  From Date Subject
Next Message Shaozhong SHI 2021-10-04 17:10:29 Re: Testing of a fast method to bulk insert a Pandas DataFrame into Postgres
Previous Message Rob Sargent 2021-10-04 16:25:12 Re: Testing of a fast method to bulk insert a Pandas DataFrame into Postgres