/read-tj-pl

Primary LanguagePythonMIT LicenseMIT

Парсинг полного технологического журнала 1С и выгрузка в таблицу СУБД (MSSQL, Postgres, SQLight)

Скрипт разработан на языке python и предназначен для разбора (парсинга) технологического журнала и дальнейшей загрузки его в базу данных. Скрипт способен разбирать полный технологический журнал без фильтров с планами запросов. Пример конфигурационного файла для тестов находится в папке проекта "full_logcfg.xml".

В результате работы скрипта ба базе данных заполняется одна единственная таблица. Каждый параметр загружается в отдельную колонку.

Дальше для анализа журнала можно использовать все средства СУБД для выборки данных.

Выгрузка поддерживается в следующие СУБД: MSSQL, Postgres, SQLight

Установка python и клонирование репозитория

Скачайте и установите python по ссылке: https://www.python.org/downloads/

Клонируйте репозиторий

git clone https://github.com/free-archer/read-tj-pl.git

или скачайте архив с кодом

https://github.com/free-archer/read-tj-pl/archive/refs/tags/v1.0.0.zip

После распаковки архива необходимо создать виртуальное окружение python, чтобы не засорять модулями систему. Выполните команду:

python -m virtualenv env

Активируйте виртуальное окружение:

.\env\Scripts\activate.bat

После установите необходимы зависимости из файла:

pip install -r .\requirements.txt

Работа с программой

Параметры запуска и параметры подключения к СУБД вынесены в переменные окружения, чтобы не держать их в коде. Все параметры содержаться в файле start.bat.simple

Переименуйте файл удалив ".simple". Останется "start.bat".

Задайте в файле необходимые параметры, они вполне понятны.

@echo off
REM Путь к файлу с логами технологического журнала 1С
set filename=21103114.log

REM Параметры соединения с базой данных. Для MSSQL и postgres совпадают.
set sql_type=sqlight
REM sql_type может принимать заначения: mssql, postgres, sqlight
set server=localhost
set database=tempdb
set username=sa
set password=pass
set table=table_name
REM Для SQLight достаточно указать только имя или путь к файлу. Файл будет создан в текущей директории запуска.
set db_file=foo2.db

После чего выполните запуск bat-файла.

Пример файла сделан для windows, но его несложно изменить для Linux.

Для просмотра результата SQLight базы удобно использовать бесплатную программу: https://sqlitebrowser.org/

Замеры времени выполнения

Был взят полный технологический журнал property=all размером 1032 Мб

Количество строк в журнале: 290760

Время выполнения с использованием модуля pyodbc

(сейчас тот скрипт не используется, находится в папке /deprecated/parse.py)

Время выполнения: 0:04:10

Потребление памяти 3,344 Gb

Время выполнения с использованием модуля SqlAlchemy

Вставка происходит в цикле по одному запросу, в качестве драйвера используется pymssql

Время выполнения: 0:09:39 mssql сервер

Время выполнения: 0:09:28 postgres сервер

Время выполнения: 0:41:00 Sqlight

Потребление памяти 3,365 Gb

Скрипт на perl

Изначально проект начинал реализовываться на языке perl. В том числе чтобы сравнить perl и python. Из за сложностей в реализации проект на perl заброшен. Хотя скрипт работает. Скрипт остался в папке /deprecated/parse.pl.