scooters-data-uploader 1.2.1
Upload educational sample data to PostgreSQL database
Requires Python: >=3.9
Keywords: uploader, scooters, data, duckdb, postgresql

# Scooters Data Uploader

[![PyPI - Version](https://img.shields.io/pypi/v/scooters-data-uploader)](https://pypi.org/project/scooters-data-uploader/)

<img src="https://github.com/Inzhenerka/scooters_data_uploader/blob/main/katalkin-inzhenerka.png?raw=true" alt="Logo" width="300"/>

Простой инструмент для загрузки данных о скутерах в базу данных PostgreSQL на основе DuckDB
в рамках
симулятора [Data Warehouse Analytics Engineer на базе dbt для инженеров и аналитиков данных](https://inzhenerka.tech/dbt)
от школы ИнженеркаТех.

Несмотря на то, что телеграм-бот [dbt Data Bot](https://t.me/inzhenerka_dbt_bot) позволяет проще загрузить данные
в базу данных через интернет, данный проект работает с локальными и приватными базами.

## Подготовка

Проще всего работать с приложением через пакетный менеджер `uv`. Его
нужно [установить](https://docs.astral.sh/uv/getting-started/installation/).

Один из вариантов установки:

```bash
pip install uv
```

После установки убедитесь, что `uv` доступен и работает с приложением:

```bash
uvx scooters-data-uploader
```

Использование `uvx` позволяет избежать клонирования репозитория и установки зависимостей, делая процесс простым и
чистым.

## Подготовка адреса базы данных

Нужно подготовить адрес базы данных в формате Database URI:

```
postgresql://<user>:<password>@<host>:<port>/<database>
```

Пример (стандартный адрес для локального PostgreSQL):

```
postgresql://postgres:postgres@localhost:5432/postgres
```

## Загрузка данных

Для загрузки данных из удаленного репозитория в базу данных выполните команду `upload`,
передав адрес базы данных в качестве аргумента:

```bash
uvx scooters-data-uploader upload <database_uri>
```

Пример:

```bash
uvx scooters-data-uploader upload postgresql://postgres:postgres@localhost:5432/postgres
```

## Проверка свежести данных

Для проверки свежести данных в базе выполните команду `version`, передав адрес базы данных в качестве аргумента:

```bash
uvx scooters-data-uploader version <database_uri>
```

Пример:

```bash
uvx scooters-data-uploader version postgresql://postgres:postgres@localhost:5432/postgres
```

## Другие команды

Открыть Telegram-бота для загрузки данных через интернет:

```bash
uvx scooters-data-uploader bot
```

Скачать SQL-файл со всеми данными для загрузки через `psql`:

```bash
uvx scooters-data-uploader sql
```

## Помощь

Для получения справки по использованию утилиты выполните команды:

```bash
uvx scooters-data-uploader --help
uvx scooters-data-uploader upload --help
uvx scooters-data-uploader version --help
```

## Альтернативные способы получения данных

### Импорт из SQL-файла

Если приложение по какой-то причине не работает, можно воспользоваться штатными средствами PosgtreSQL (psql,
pg_restore),
чтобы создать схему со всеми таблицами из
файла [scooters_raw.sql](https://inzhenerka-public.s3.eu-west-1.amazonaws.com/scooters_data_generator/scooters_raw.sql).

Пример команды для загрузки данных из файла:

```bash
psql  -U postgres -d postgres < scooters_raw.sql
```

### Загрузка через бота

Телеграм-бот [dbt Data Bot](https://t.me/inzhenerka_dbt_bot) позволяет загрузить данные в базу данных, доступную через
интернет.

## Источник данных

Данные созданы в симуляторе поездок [scooters_data_generator](https://github.com/Inzhenerka/scooters_data_generator).
Там же можно найти ссылки на опубликованные parquet-файлы с данными, которые использует данное приложение для загрузки в
базу.

## Другие ссылки

- [Чебоксарский кикшеринг покоряет столицу](https://vc.ru/u/206753-farya-roslovets/1103469)
- [Тренажеры по работе с данными от Инженерки](https://inzhenerka.tech/working-with-data)