Package: pg-save
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 подряд - выход из интерактивного режима