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.