Как экспортировать большую таблицу PostgreSQL с помощью Python

Простой экспорт большой таблицы может привести к сбою компьютера из-за использования всей доступной оперативной памяти, поэтому мы предлагаем метод с помощью Python.

При работе с большими наборами данных таблицы PostgreSQL обычно извлекаются в файлы CSV для анализа и совместного использования. Но простой экспорт большой таблицы может привести к сбою компьютера из-за использования всей доступной оперативной памяти. Рассказываем, как решить этот вопрос при помощи Python. Об этом пишет dev.to.

Потоковая передача данных частями с помощью psycopg2

Потоковая передача данных порционно, которая идет из базы данных непосредственно на диск. Модуль psycopg2 предоставляет удобный метод COPY, позволяющий сделать именно это.

Сначала подключитесь к базе данных и откройте выходной CSV:

import psycopg2

conn = psycopg2.connect("dbname=mydb user=postgres")

with open('out.csv', 'w') as f:

Затем используйте copy_expert() для потоковой передачи таблицы в файл частями:

cur = conn.cursor()

cur.copy_expert('COPY employees TO STDOUT WITH CSV HEADER', f)


Таблица передается в CSV без загрузки всего в память. Теперь собираем все вместе

import psycopg2

conn = psycopg2.connect("dbname=mydb user=postgres")

with open('out.csv', 'w') as f:

  cur = conn.cursor()

  cur.copy_expert('COPY employees TO STDOUT WITH CSV HEADER', f)
print("Table exported to CSV!")

Передавая данные частями непосредственно в файл, можно избежать проблем с оперативной памятью и эффективно экспортировать таблицу.

Читайте также
Топ 7 диджитал трендов для бизнеса в 2024 году
Топ 7 диджитал трендов для бизнеса в 2024 году
Топ 7 диджитал трендов для бизнеса в 2024 году

Мир быстро меняется и доставляет проблемы бизнесу, но также и дает огромные возможности. Чтобы оставаться конкурентоспособным, необходимо пользоваться актуальными трендами для трансформации своего бизнеса под текущие реалии. Посмотрим 7 трендов для бизнеса:

Запустили llm.js — библиотеку для запуска больших языковых моделей в браузере
Запустили llm.js — библиотеку для запуска больших языковых моделей в браузере
Запустили llm.js — библиотеку для запуска больших языковых моделей в браузере

Появилась библиотека llm.js для запуска больших языковых моделей в браузере. Она написана на JavaScript. Библиотеку опубликовали на GitHub.

Dev новости: Deno 2.0 и обновления Angular
Dev новости: Deno 2.0 и обновления Angular
Dev новости: Deno 2.0 и обновления Angular

Мир веб-разработки продолжает стремительно развиваться, и на этот раз на сцене появляются важные обновления, которые обещают изменить будущее программирования и развертывания приложений. Команда Deno представила значительное обновление — Deno 2.0, а разработчики Angular внесли серьёзные изменения в API effect(). Кроме того, компания Anthropic запустила новый API, специально разработанный для обработки больших объёмов задач. Давайте разберём, что эти изменения означают для отрасли.

Chrome 120 beta
Chrome 120 beta
Chrome 120 beta

Новые 7 фич для CSS. Улучшения для nesting (вложенности стилей). Создание «аккордиона» для через элемент details и многое другое.