Импорт данных CSV-файла в таблицу plsql с использованием Python - PullRequest
0 голосов
/ 20 июня 2019

У меня есть CSV-файл, который содержит 60000 строк. Мне нужно вставить эти данные в таблицу базы данных postgres. Есть ли способ сделать это, чтобы сократить время для вставки данных из файла в базу данных без зацикливания? пожалуйста, помогите мне Версия Python: 2.6

Database : postgres
 table: keys_data

 File Structure
1,ED2,'FDFDFDFDF','NULL'
2,ED2,'SDFSDFDF','NULL

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Postgres может читать CSV непосредственно в таблицу с помощью команды COPY .Для этого необходимо либо иметь возможность размещать файлы непосредственно на сервере Postgres, либо данные могут передаваться по соединению с помощью COPY FROM STDIN.

Команда \copy в клиенте командной строки Postgres psql будет считывать файл локально и вставлять, используя COPY FROM STDIN, так что это, вероятно, самый простой (и все же самый быстрый) способ сделать это.

Примечание: это не требует использования Python, это встроенная функциональность в Postgres, и не все или большинство других RDB имеют такую ​​же функциональность.

0 голосов
/ 20 июня 2019

Я выполнил аналогичную задачу, единственное исключение состоит в том, что мое решение основано на Python 3.x.Я уверен, что вы можете найти эквивалентный код этого решения.Код довольно понятен.

from sqlalchemy import create_engine

def insert_in_postgre(table_name, df):

    #create engine object
    engine = create_engine('postgresql+psycopg2://user:password@hostname/database_name')

    #push dataframe in given database engine
    df.head(0).to_sql(table_name, engine, if_exists='replace',index=False ) 
    conn = engine.raw_connection()
    cur = conn.cursor()
    output = io.StringIO()
    df.to_csv(output, sep='\t', header=False, index=False)
    output.seek(0)
    contents = output.getvalue()
    cur.copy_from(output, table_name, null="") 
    conn.commit()
    cur.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...