Skip to main content

An utility to save Postgres table data to csv, xlsx, json or geojson without a need of GeoPandas

Project description

saver - сохранение данных из базы данных Postgresql в различные форматы

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

Установка

  1. Установить python3 (тестировалось на версии 3.10)
  2. Скачать содержимое репозитория и открыть терминал в папке
  3. Установить зависимости через python -m pip install -r requirements.txt
  4. Запустить через python -m pg_save запрос/название_таблицы

Параметры запуска

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

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

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

  • --db_addr / -H - адрес сервера (по-умолчанию localhost)
  • --db_port / -P - порт сервера (по-умолчанию 5342)
  • --db_name / -D - название базы данных (по-умолчанию city_db_final)
  • --db_user / -U - имя пользователя (по-умолчанию postgres)
  • --db_pass / -W - пароль пользователя (по-умолчанию postgres)

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

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

Если задан хотя бы один из этих аргументов, то запрос обработан не будет, даже если он задан.
Список таблиц стоит выше по приоритету, чем получение информации о таблице.

  • --list_tables / -l - получение списка таблиц в базе данных
  • --describe_table / -d - получение информации о выбранной таблице

Прочие параметры

  • --geometry_column / -g - установка столбца геометрии (для вывода в geojson)
  • --use_centroids / -c (флаг) - сохранять только центроиды объектов (для выгрузки таблицы, с запросом ничего не делает)
  • --verbose_level / -v - уровень работы логгера (ERROR, WARNING, INFO, DEBUG) - также может быть загружен из переменной окружения VERBOSE_LEVEL
  • --filename / -f - сохранение в файл, формат по расширению (.csv, .xlsx, .geojson или .json). Для сохранения в geojson необходимо указать столбец геометрии (по-умолчанию goemetry)
  • --interactive / -i - интерактивный режим

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

При запуске с параметром --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.1.1.tar.gz (15.8 kB view hashes)

Uploaded Source

Built Distribution

pg_save-0.1.1-py3-none-any.whl (16.6 kB view hashes)

Uploaded Python 3

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