# #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-файла в базу данных. Затем выполните запрос, чтобы выбрать нужное значение и объединить их в целевой таблице.
Когда вы можете, предпочитайте встроенную/встроенную функцию, а не самодельную!