Как экспортировать огромную базу данных postgresql партиями? - PullRequest
0 голосов
/ 15 марта 2020

У меня огромная база данных, насчитывающая более 20 миллионов строк. Я могу экспортировать всю базу данных (это занимает несколько часов), но когда я пытаюсь отфильтровать данные с помощью python (pandas), pycharm не удается (из-за проблем с памятью).

Есть ли способ экспорта база данных в пакетах по 2 миллиона строк для примера? Экспортировать 2mil, затем другие 2mil и иметь 10 файлов по 2 миллиона строк в конце? Таким образом, я могу фильтровать каждый файл, используя python (pandas), и у меня не будет проблем с памятью.

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 марта 2020

20 миллионов строк не так много. Если каждая отдельная строка не достаточно велика или вы отправляете по медленной сети, экспорт должен занимать минуты, а не часы.

Если вы хотите разделить одну таблицу, это лучше для COPY, а не для pg_dump.

psql -c 'copy pgbench_accounts to stdout'|split -l 2000000

Вы должны набрать его в командной строке терминала, так же, как и pg_dump. Он будет отправлять данные таблицы так же, как это делает pg_dump (за исключением того, что она выполняет только данные и только для одной таблицы), но затем команда linux split разбивает их на файлы по 2e6 строк в каждом.

Ну, я вижу, вы не упомянули pg_dump в своем посте. Когда вы сказали «экспорт», что вы имели в виду? Я предполагал, что вы имели в виду pg_dump.

0 голосов
/ 15 марта 2020

Вы можете использовать pg_dump, чтобы извлечь только одну или несколько таблиц или исключить таблицы, если это поможет

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