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
в базе данных.
Установка из исходного кода
- Установить [python3](https://python3.org) версии не меньше 3.9
- Скачать содержимое репозитория и открыть терминал в директории
- Установить с помощью
pipx install .
илиpip install .
- Запустить через
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | d93643c5a3cd8538f2783b79f68fbe96c74dcca163533ada97e3c15b2633bb0d |
|
MD5 | 856a5b78856bbea1c4ac100329c9ec43 |
|
BLAKE2b-256 | 67d14b256e3c4cc53f5d77843d7195c91861f556b9bfded3ca334440b47663e6 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5df78456ed86c7454885aec1f114a6142630f0aecdf0e9da12daf4b4e997def |
|
MD5 | b3408070f663df8813b1074b4ced9802 |
|
BLAKE2b-256 | 7eadbd768d22f03bfb9aa985cdca9ebf526c01948a97aa8d18aedc303bd8dcb7 |