Как экспортировать большую таблицу 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!")

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

Читайте также
Опубликовали предварительную версию Catalyst v0.1.0
Опубликовали предварительную версию Catalyst v0.1.0
Опубликовали предварительную версию Catalyst v0.1.0

По словам разработчиков, Catalyst — это первый полностью компонентизованный UI-kit, который выполнен по концепции Batteries Included («Всё включено»). В нем используются настоящие компоненты React с продуманными API.

Исследователи выявили уязвимость в Middleware Next.js и другие новости разработки
Исследователи выявили уязвимость в Middleware Next.js и другие новости разработки
Исследователи выявили уязвимость в Middleware Next.js и другие новости разработки

В последнем выпуске новостей для разработчиков: уязвимость в Middleware Next.js, новое CSS-предложение по разделительным линиям, запуск TanStack Form и переход Google к закрытой разработке Android OS.

15 сайтов, чтобы сэкономить время CSS-разработчику
15 сайтов, чтобы сэкономить время CSS-разработчику
15 сайтов, чтобы сэкономить время CSS-разработчику

Собрали 15 сайтов, которые помогут сэкономить много времени и расширить опыт разработки CSS.

Dev новости: Angular 19, Vue.js 3.5, Android 15
Dev новости: Angular 19, Vue.js 3.5, Android 15
Dev новости: Angular 19, Vue.js 3.5, Android 15

На этой неделе мир разработчиков обсуждает переход Angular к standalone компонентам, выпуск Vue 3.5, а также то, как разработчики используют искусственный интеллект для повышения навыков. Рассмотрим подробнее все значимые изменения.