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](https://python3.org) версии не меньше 3.9
  2. Скачать содержимое репозитория и открыть терминал в директории
  3. Установить с помощью pipx install . или pip install .
  4. Запустить через pg-save --help

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

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

В случае ошибки сборки psycopg2 нужно поставить необходимые зависимости, либо устанавливать из исходного кода с заменой psycopg2 на psycopg2-binary в [pyproject.toml](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](env_default.txt) .

Задать имя файла для загрузки переменных окружения можно через переменную окружения 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.0.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

pg_save-0.3.0-py3-none-any.whl (29.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pg_save-0.3.0.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.6 Linux/5.15.0-76-generic

File hashes

Hashes for pg_save-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d93643c5a3cd8538f2783b79f68fbe96c74dcca163533ada97e3c15b2633bb0d
MD5 856a5b78856bbea1c4ac100329c9ec43
BLAKE2b-256 67d14b256e3c4cc53f5d77843d7195c91861f556b9bfded3ca334440b47663e6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pg_save-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 29.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.6 Linux/5.15.0-76-generic

File hashes

Hashes for pg_save-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a5df78456ed86c7454885aec1f114a6142630f0aecdf0e9da12daf4b4e997def
MD5 b3408070f663df8813b1074b4ced9802
BLAKE2b-256 7eadbd768d22f03bfb9aa985cdca9ebf526c01948a97aa8d18aedc303bd8dcb7

See more details on using hashes here.

Supported by

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