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

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

Читайте также
Dev новости: Angular делает RxJS опциональным; Опрос Drupal Открывает Сложности Headless подхода
Dev новости: Angular делает RxJS опциональным; Опрос Drupal Открывает Сложности Headless подхода
Dev новости: Angular делает RxJS опциональным; Опрос Drupal Открывает Сложности Headless подхода

Обсуждение в ангуляре RxJS. Headless у drupal. Релиз турброрепо 2 и другие новости веба.

NumPy 2.0: Новая Эра для Фундаментальной Математической Библиотеки Python
NumPy 2.0: Новая Эра для Фундаментальной Математической Библиотеки Python
NumPy 2.0: Новая Эра для Фундаментальной Математической Библиотеки Python

С релизом NumPy 2.0, первой значимой новой версии с 2006 года, мир Python получает не только улучшенную производительность, но и множество новых функций. NumPy, являясь краеугольным камнем научных и числовых вычислений на Python, продолжает расширять свои возможности и упрощать работу для разработчиков и исследователей.

Цикл поддержки Vue 2 завершится в 2023 году
Цикл поддержки Vue 2 завершится в 2023 году
Цикл поддержки Vue 2 завершится в 2023 году

Цикл поддержки Vue 2 закончится 31 декабря 2023 года, рассказали в блоге Vue. Эта версия перестанет получать новые функции, исправления ошибок и обновления. В официальных каналах распространения прежняя версия останется.

Сжатие и распаковка в браузере с помощью Compression Streams API
Сжатие и распаковка в браузере с помощью Compression Streams API
Сжатие и распаковка в браузере с помощью Compression Streams API

С API веб-приложениям больше не нужно предоставлять собственную библиотеку сжатия или распаковки.