PostgreSQL COPY из файла приводит к пустой таблице - PullRequest
0 голосов
/ 13 октября 2018

Я использую следующий код для копирования данных из CSV-файла в таблицу:

CSV-файл (через запятую) с заголовком:

uid,name,val1,val2,file
SKU001,glasses,blue,metal,block_0
...

создать таблицу:

ih_sql = 'CREATE TABLE "sku_data" (uid VARCHAR, name VARCHAR, val1 VARCHAR, val2 VARCHAR, file VARCHAR, PRIMARY KEY (uid));'
engine.execute(ih_sql)
#<sqlalchemy.engine.result.ResultProxy at 0x7fee9b8ff550>

копировать данные:

ih_file = os.path.abspath(f'{PATH}data.csv')
copy_sql = f"COPY sku_data FROM '{ih_file}' WITH CSV HEADER DELIMITER ','"
engine.execute(copy_sql)
#<sqlalchemy.engine.result.ResultProxy at 0x7fee9b8ff710>

Однако результирующая таблица пуста, ноль строк создано.Как я могу понять, почему данные не были скопированы из файла CSV?

1 Ответ

0 голосов
/ 13 октября 2018

Вы должны явно зафиксировать транзакцию, например:

copy_sql = f"COPY sku_data FROM '{ih_file}' WITH CSV HEADER DELIMITER ','"
connection = engine.connect()
with connection.begin():
    connection.execute(copy_sql)

Подробнее о Понимание Autocommit.

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