Автоматическое создание таблицы PostgreSQL и вставка из CSV или Pandas DataFrame

Кто-нибудь знает какой-нибудь Python пакет или функцию, которая может загружать Pandas DataFrame (или просто .csv) в таблицу PostgreSQL, даже если таблица еще не существует?

(т.е. он запускает CREATE TABLE с соответствующими именами столбцов и типами столбцов на основе сопоставления между типами данных python и ближайшими эквивалентами в PostgreSQL)

В R я использую пакет ROracle, который предоставляет функцию dbWriteTable, которая делает то, что я описал выше. (см. документы здесь)


person Tommy O'Dell    schedule 08.01.2014    source источник
comment
stackoverflow.com/questions/17159841/   -  person Prasanna Nandakumar    schedule 08.01.2014
comment
Пакет RPostgreSQL в R также поддерживает dbWriteTable.   -  person G. Grothendieck    schedule 08.01.2014
comment
Отвечает ли это на ваш вопрос? Как записать DataFrame в таблицу postgres?   -  person Joey Baruch    schedule 14.05.2021


Ответы (2)


Начиная с pandas 0.14, функции sql также поддерживают postgresql (через SQLAlchemy, поэтому работают все разновидности баз данных, поддерживаемые SQLAlchemy). Таким образом, вы можете просто использовать to_sql для записи кадра данных pandas в базу данных PostgreSQL:

import pandas as pd
from sqlalchemy import create_engine
import psycopg2
engine = create_engine('postgresql://scott:tiger@localhost:5432/mydatabase')

df.to_sql("table_name", engine)

См. документы: http://pandas.pydata.org/pandas-docs/stable/io.html#sql-queries

Если у вас более старая версия pandas (‹ 0.14), см. этот вопрос: Как записать DataFrame в таблицу postgres?

person joris    schedule 17.06.2014
comment
Почему вы импортируете psycopg2? - person ucsky; 02.10.2017

Они просто сделали пакет для этого. https://gist.github.com/catawbasam/3164289 Не знаю, насколько хорошо это работает.

person user531525    schedule 21.01.2014