Пакетная вставка Postgresql для csv-файла/фрейма данных (на GCP)

# #sql #pandas #postgresql #google-cloud-platform #batch-processing

Вопрос:

У меня есть csv-файл с двумя столбцами [key, chunk] , который мне нужно вставить в таблицу базы данных SQL. (Расширяя информацию — база данных Postgresql, размещенная на GCP, я могу нормально выбирать и выполнять другие операции с базой данных.)

Мой csv-файл содержит более 10 миллионов строк. И поэтому мне любопытно, какой лучший доступный мне вариант пакетной вставки, специфичный для синтаксиса Postgresql? Поможет ли вообще открытие csv-файла в качестве фрейма данных pandas? Из-за размера файла я бы хотел избежать итеративных вставок строк.

Ответ №1:

Вы можете передавать большие csv-файлы в PostgreSQL с psql помощью «s copy» или psycog2 «s copy_expert».

Загрузка его сначала в фрейм данных panda, как правило, будет контрпродуктивной, так как он захочет проанализировать все это в памяти сразу, а не передавать в потоковом режиме.

Комментарии:

1. Я вижу COPY country TO STDOUT (DELIMITER '|'); список в середине/нижней части postgresql.org/docs/9.2/sql-copy.html . Это все? Похоже, мне не нужно указывать имена столбцов или что-то еще, как это подробно описано в файле csv.

Ответ №2:

Вы можете просто использовать функцию импорта в Cloud SQL для загрузки CSV-файла в базу данных. Затем выполните запрос, чтобы выбрать нужное значение и объединить их в целевой таблице.

Когда вы можете, предпочитайте встроенную/встроенную функцию, а не самодельную!