PostgreSQL импортирует CSV-файлы в два этапа с помощью одного скрипта (psycopg2) - PullRequest
1 голос
/ 21 апреля 2019

Я немного сбит с толку, так как мне нужно импортировать один пакет csv-файлов в базу данных PostgreSQL на первом этапе, а затем добавить другой пакет на втором этапе. Например, второй этап csv является дополнительным обновлением csv. Это должно быть в одной программе.

Итак, мой вопрос: как мне поступить в Python, нужно ли использовать двухфазные коммиты или есть другое решение?

Любая помощь очень ценится!

1 Ответ

1 голос
/ 21 апреля 2019

Вы можете использовать psycopg2's copy_from метод. Грубый пример (измените пользователя, имя файла, разделитель и т. Д. По своему усмотрению):

import psycopg2

def read_csv_file(file_name, table_name):
    con = psycopg2.connect("host=your_host dbname=your_db user=your_user")
    cur = con.cursor()
    with open(file_name, "r") as f:
        cur.copy_from(f, table_name, sep=",")
    con.commit()

csv_list = [
    ("file1.csv", "table1"),
    ("file2.csv", "table2"),
    ("file3.csv", "table3"),
]

for file_name, table_name in csv_list:
    read_csv_file(file_name, table_name)

Поскольку copy_from добавляет в таблицу, вы можете повторить это для "обновления" csvs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...