Skip to main content

An utility to export Postgres table data to a various formats without having GeoPandas as a requirement

Project description

pg-save - Утилита для сохранения данных из базы данных PostgreSQL в различные форматы

Данная утилита позволяет экспортировать данные таблиц в csv, json, xlsx и geojson форматы посредством выгрузки из базы данных с помощью драйвера psycopg2 и обработки и сохранения средствами pandas.

Сохранение geojson происходит без использования geopandas, вся нагрузка по преобразованию геометрии ложится на PostGIS в базе данных.

Установка из исходного кода

  1. Установить python3 версии не меньше 3.9
  2. Скачать содержимое репозитория и открыть терминал в директории
  3. Установить с помощью pipx install . или pip install .
  4. Запустить через pg-save --help

Установка через pipx (pip)

Выполнить pipx install pg-save.

В случае ошибки сборки psycopg2 нужно поставить необходимые зависимости, либо устанавливать из исходного кода с заменой psycopg2 на psycopg2-binary в pyproject.toml.

Аргументы запуска

Единственный принимаемый аргумент - запрос, название таблицы или имя файла с запросом/названием таблицы. Приоритеты: имя файла (если есть такой файл) -> запрос (если начинается со слова SELECT в любом регистре) -> название таблицы (если не подошли другие варианты).

Если аргумент не указан (а также не указаны команды получения списка таблиц, получения свойств заданной таблицы, или запуска интерактивного режима), то программа завершается с ошибкой.

Параметры подключения к базе данных

Могут быть установлены через следующие аргументы:

  • --db_addr / -h - адрес сервера (по-умолчанию localhost)
  • --db_port / -p - порт сервера (по-умолчанию 5342)
  • --db_name / -d - название базы данных (по-умолчанию city_db_final)
  • --db_user / -u - имя пользователя (по-умолчанию postgres)
  • --db_pass / -w - пароль пользователя (по-умолчанию postgres)
  • --verbose_level / -v - уровень работы логгера (ERROR, WARNING, INFO, DEBUG, TRACE) - также может быть загружен из переменной окружения VERBOSE_LEVEL

Кроме того, эти же параметры могут быть заданы через переменные окружения, пример - env_default .

Задать имя файла для загрузки переменных окружения можно через переменную окружения ENVFILE, по-умолчанию будет попытка использования файла .env в директории запуска. Для удобства рекомендуется скопировать и изменить файл, назвав его env

Выполнение заданного select-запроса

Команда query позволяет выполнить заданный select-запрос. Доступные параметры:

  • --geometry_column / -g - установка столбца геометрии (для вывода в geojson)
  • --execute_as_is / -r (флаг) - не выполнять автоматически ST_AsGeoJSON() для геометрий объектов
  • --output_filename / -o - сохранение в файл, формат по расширению (.csv, .xlsx, .geojson или .json). Для сохранения в geojson необходимо указать столбец геометрии (по-умолчанию goemetry)

Сохранение всех данных таблицы

Команда select-table позволяет выполнить запрос вида SELECT * FROM <table>. Доступные параметры:

  • --geometry_column / -g - установка столбца геометрии (для вывода в geojson)
  • --use_centroids / -c (флаг) - сохранять только центроиды объектов (для выгрузки таблицы, с запросом ничего не делает)
  • --output_filename / -o - сохранение в файл, формат по расширению (.csv, .xlsx, .geojson или .json). Для сохранения в geojson необходимо указать столбец геометрии (по-умолчанию goemetry)

Варианты работы, отличные от выгрузки данных

  • list-tables - получение списка таблиц в базе данных
  • describe-table - получение информации о выбранной таблице/представлении/материализованном представлении
  • interactive - запуск интерактивного режима (о нем ниже)

Интерактивный режим

Данный режим позволяет последовательно вводить команды без перезапуска утилиты и переподключения к базе данных.

Доступные команды:

  • <query/filename> [> filename] (запрос или путь до файла с запросом, опционально стрелочка и имя файла (в кавычках или нет)) - выполнение select-запроса с возможностью сохранения в файл. Если файл для сохранения не задан, резултат просто выводится на экран.

  • "<query/filename>" [> filename] (запрос или путь до файла с запросом в кавычках, опционально стрелочка и имя файла (в кавычках или нет)) - выполнение select-запроса с возможностью сохранения в файл. Если файл для сохранения не задан, резултат просто выводится на экран. Запрос можно разносить на несколько строк, а также использовать внутри экранированные кавычки => аналогично запуску с запрсом.

    Приоритет между файлом и запросом отдается в сторону файла (если такой файл есть).

  • \s <table_name> [> filename] (имя таблицы после \s, опционально стрелочка и имя файла) - получение всего, что находится в таблице с опциональным сохранением в файл => аналогично запуском с аргументом - названием таблицы.

  • \dt [schema] - получение списка таблиц, опционально можно задать схему (по-умолчанию выводятся все не-системные таблицы) => аналогично ключу --list_tables.

  • \d [schema].<table> - Получение описания таблицы (столбцы, типы данных, возможность нахождения null'а и наличие значения по-умолчанию) => аналогично ключу --describe_table.

  • \geometry_column, \g - изменение названия колонки геометрии для сохранения таблиц в geojson => аналогично ключу --geometry_column

  • \use_centroids, \c - Переключение режима использования центроидов (используется в случае загрузки таблиц) => аналогично ключу --use_centroids.

  • q, quit, exit, два нажатия Ctrl+C подряд - выход из интерактивного режима

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pg_save-0.3.2.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pg_save-0.3.2-py3-none-any.whl (29.2 kB view details)

Uploaded Python 3

File details

Details for the file pg_save-0.3.2.tar.gz.

File metadata

  • Download URL: pg_save-0.3.2.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.12.6 Linux/6.1.112-1-MANJARO

File hashes

Hashes for pg_save-0.3.2.tar.gz
Algorithm Hash digest
SHA256 eca920eb3f98f06d867d9a15c2139c8a49ec8efbb3241f27d97668e14c9de475
MD5 50584cce1601a5545bd6240128905b7a
BLAKE2b-256 940de42e85c1d843c3f65c4678a13fc9e8db33ad64ceff568059235d9c5cf14e

See more details on using hashes here.

File details

Details for the file pg_save-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: pg_save-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 29.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.12.6 Linux/6.1.112-1-MANJARO

File hashes

Hashes for pg_save-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ce825272cc69f95923ce2b87cd8d69deb4ba758254d52439bbce416bc199ee6b
MD5 879e8f2f00b82fdc695d55dd7d03eeef
BLAKE2b-256 c8a554eff613d67c143b862142559d9f1705073ff4ad1f19f722e1519333dafd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page