У меня есть существующая таблица в Postgresql, которая имеет столбец id (serial) для идентификации строки и является первичным ключом. У меня есть сценарий для импорта CSV, который не содержит столбца id. Вот код, я использую:Импорт CSV без первичного ключа в существующую таблицу
file_list = glob.glob(path)
for f in file_list:
if os.stat(f).st_size != 0:
filename = os.path.basename(f)
arc_csv = arc_path + filename
data = pandas.read_csv(f, index_col = 0)
ind = data.apply(lambda x: not pandas.isnull(x.values).any(),axis=1)
data[ind].to_csv(arc_csv)
cursor.execute("COPY table FROM %s WITH CSV HEADER DELIMITER ','",(arc_csv,))
conn.commit()
os.remove(f)
else:
os.remove(f)
Сценарий не может импортировать CSV с современностью идентификатор (p_key) столбца в таблице из-за этого не существует в CSV, так что у меня есть 2 варианта я могу думать : 1- Выполните команду, чтобы удалить столбец идентификатора перед импортом и добавить его обратно после импорта, или 2- Найдите способ увеличить столбец идентификаторов с помощью моей команды cursor.execute.
Мой вопрос в том, какой подход лучше и хороший способ обойти это (или, конечно, у кого-то есть лучшая идея!)? Благодарю.
что панды там делает? Опубликовать образец строки вашего CSV показать вашу структуру таблицы – e4c5
Поскольку вы уже используете Python, вы можете просто перебирать строки данных csv самостоятельно и вставлять их по отдельности и не беспокоиться о ограничениях 'COPY FROM' , – larsks