Я немного сбит с толку, так как мне нужно импортировать один пакет CSV файлов в базу данных PostgreSQL на первом этапе, а затем добавить другой пакет на втором этапе. Например, вторая фаза csv - это дополнительное обновление csv. Это должно быть в одной программе.
Итак, мой вопрос: как мне поступить в Python, нужно ли использовать двухфазные коммиты или есть другое решение?
Любая помощь с благодарностью!
Вы можете использовать метод psycopg2 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
добавляется в таблицу, вы можете повторить это для "update" csvs.
copy_from
читает один CSV. Таким образом, вы можете поместить его в функцию и вызывать ее несколько раз.