Вставка данных Excel в Postgres с помощью Python - PullRequest
0 голосов
/ 17 мая 2018

Имея рабочий лист с ~ 20 000 строк данных, каков наилучший подход для их вставки в базу данных postgres?

Таблица, в которую я буду вставлять данные, состоит из множества внешних ключей, что означает, чтоЯ не могу просто вставить эту таблицу с помощью подхода, описанного здесь: Массовая вставка кадра данных Pandas с использованием SQLAlchemy .Хотя у меня есть такие значения, как «Обувь», «Куртка», «Сумка» и т. Д. Мне нужно, чтобы они были в форме идентификатора чужой таблицы.

Я могу легко преобразовать эти данные в DataFrameс xlwings, но тогда мне еще нужно выяснить, как легко и быстро позаботиться о преобразованиях внешнего ключа.

Например, таблица 1:

product_id  country product
1           USA     Shoes
2           UK      Jacket
3           GER     Bag

Например, таблица 2:

user_id Name
1       John
2       Larry
3       Page

Например, таблица 3 (на которую я загружаю):

order_id    user    product
1           3       2
2           2       2
3           1       1

И, наконец, таблица, которую я имею в excel:

user    bought
John    Shoes
Larry   Shoes
Page    Bag

Спасибо!

1 Ответ

0 голосов
/ 17 мая 2018

Сначала загрузите внешние ключи из базы данных, а затем сопоставьте со столбцами фрейма данных.Как пример:

engine = create_engine('conn string')
col_tables={'col1':'table1', 'col2':'table2' }
for col, table in col_tables.items()
    res = engine.execute("select name, id from {}".format{table})
    d = dict(res)
    df[col] = df[col].map(d)
...