Skip to content

Загрузчик данных таблиц из файлов CSV в базу данных Postgres. Реализованы многопоточность и разделение данных на чанки для обработки.

Notifications You must be signed in to change notification settings

kirillFedorov1/csv-to-pg-simple-loader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

csv to pg simple loader

Загрузчик данных таблиц из файлов CSV в базу данных Postgres. Реализованы многопоточность и разделение данных на чанки для обработки.

Установка

  1. Убедитесь, что у вас установлен Python 3.7 или новее.
  2. Клонируйте репозиторий.
  3. Установите необходимые зависимости: pip install -r requirements.txt

Использование

Для работы скрипта необходимы переменные окружения:

  • SRC_PATH для каталога с CSV файлами источников.

Подключение к бд

  • DB_USERNAME - логин;
  • DB_PASSWORD - пароль;
  • DB_HOST - адрес;
  • DB_PORT - порт;
  • DB_NAME - имя.

Также в директории с файлами источников необходим файл с описаниями схем таблиц schemas.json. Описание схем необходимо скрипту, чтобы получить имена полей для таблиц.

Для загрузки данных запустите скрипт run.py с опциональными аргументами:

python run.py --tables 'categories, customers, departments' --chunks 10000

Где:

  • --tables - список таблиц для обработки. Если пусто - обрабатывает все файлы в каталоге источников;
  • --chunks - количество чанков. Если пусто - нет разделения на чанки.

Особенности

В директории data\retail_db представлены примеры CSV файлов, а также файл с описаниями схем таблиц schemas.json. Для корректной работы конвертера убедитесь, что структура ваших CSV файлов и файла схем соответствует приведенным примерам.

Структура CSV

CSV файлы представлены в формате, где каждая строка содержит запись, а каждая запись разделена запятыми. Например, файл CSV с названием departments.csv может выглядеть следующим образом:

2,Fitness
3,Footwear
4,Apparel
...

Здесь:

  • первое значение в строке (перед запятой) представляет собой идентификатор отдела (department_id);
  • второе значение в строке (после запятой) представляет собой название отдела (department_name).

Структура файла схем

Файл схемы, schemas.json, определяет структуру и формат данных в CSV файлах. Файл содержит отдельные определения для каждой таблицы (например, departments, categories и т. д.).

Пример структуры для таблицы departments:

{
    "departments": [
        {
            "column_name": "department_id",
            "data_type": "integer",
            "column_position": 1
        },
        {
            "column_name": "department_name",
            "data_type": "string",
            "column_position": 2
        }
    ]
}

Здесь:

  • column_name - название колонки;
  • data_type - тип данных колонки (integer, string и т. д.);
  • column_position - позиция колонки в CSV файле (начиная с 1).

Для каждой таблицы (например, departments, categories) необходимы отдельные определения, определяющие структуру и формат соответствующих CSV файлов.

About

Загрузчик данных таблиц из файлов CSV в базу данных Postgres. Реализованы многопоточность и разделение данных на чанки для обработки.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages