MSSQL2File — мощная утилита командной строки для экспорта данных из баз данных (MSSQL, MySQL, ClickHouse) в файлы различных форматов с поддержкой сжатия и гибкой настройкой периодов выгрузки.
| Возможность | Описание |
|---|---|
| 🕒 Гибкая выборка данных | Экспорт за произвольный период или автоматическая выгрузка новых данных с последней точки |
| 📁 Множество форматов | Поддержка JSON, CSV и XML |
| 🗜️ Сжатие на лету | GZip и LZ4 для минимизации размера выходных файлов |
| ⚙️ Гибкая настройка | Конфигурация через параметры CLI или файл конфигурации |
| 🔌 Мульти-БД | Поддержка MSSQL, MySQL и ClickHouse |
| 📝 Настройка CSV | Настраиваемые разделители и заголовки |
| 🏷️ Шаблоны имен файлов | Динамические имена с датой, временем и периодом |
# Скачайте последнюю версию
curl -L https://github.com/Headcrab/mssql2file/releases/latest/download/mssql2file.tar.gz -o mssql2file.tar.gz
# Распакуйте
tar -xzf mssql2file.tar.gz
# Переместите в PATH (опционально)
sudo mv mssql2file /usr/local/bin/# Экспорт последних данных в JSON
mssql2file -start last -period 1h -format json
# Выгрузка за период с сжатием
mssql2file -start "2023-02-20 00:00:00" -period 24h -format xml -compression gz
# Использование конфигурационного файла
mssql2file -config production.cfgmssql2file \
-start last \
-period 1h \
-format json \
-output "./data" \
-name "last_hour_{start}_{end}.{format}"mssql2file \
-start last \
-period 5m \
-format csv \
-csv_delimiter "|" \
-csv_header true \
-compression lz4 \
-output "./exports" \
-name "data_{start}_{end}.{format}.{compression}"# Добавить в crontab (ежечасно)
0 * * * * /usr/local/bin/mssql2file -start last -period 1h -format json -output "/backups" -name "hourly_{start}_{end}.{format}.{compression}"Создайте JSON-файл mssql2file.cfg для сохранения настроек:
{
"Connection_type": "mssql",
"Connection_string": "server=localhost;port=1433;user id=sa;password=secret;database=production;TrustServerCertificate=true;encrypt=disable;",
"Start": "last",
"Period": "1h",
"Output": "./exports",
"Template": "data_{start}_{end}.{format}.{compression}",
"Output_format": "json",
"Compression": "gz",
"Csv_delimiter": ";",
"Csv_header": true
}| Формат | Сжатие | Особенности |
|---|---|---|
| JSON | GZip, LZ4 | Человеко-читаемый, для API |
| CSV | GZip, LZ4 | Настраиваемые разделители |
| XML | GZip, LZ4 | Структурированные данные |
mssql2file [OPTIONS]
Основные:
-start Время начала (last|2023-01-01 00:00:00)
-period Период выгрузки (1h, 30m)
-format Формат файла (json|csv|xml)
-output Директория выгрузки
-name Шаблон имени файла
База данных:
-connection_type Тип драйвера (mssql|mysql|clickhouse)
-connection_string Строка подключения
-decoder Декодер строковых полей (windows-1251|Windows1251|cp1251|koi8-r|KOI8R)
CSV настройки:
-csv_delimiter Разделитель полей
-csv_header Включить заголовок (true|false)
Сжатие:
-compression Метод сжатия (gz|lz4|none)
Конфигурация:
-config Путь к JSON-конфигу
-last_period_end Последняя обработанная точка
-query SQL-запрос
Переменные окружения:
M2F_CONNECTION_TYPE
M2F_CONNECTION_STRING
M2F_OUTPUT
M2F_OUTPUT_FORMAT
M2F_COMPRESSIONДля каждой выгрузки утилита пишет одну итоговую строку:
[19.03.2026 09:15:11] Период 2026-03-19 09:14:00 -> 2026-03-19 09:15:00 | строк: 18 041 | БД: 11s | файл: 0s | всего: 11s | result_260319_091400_260319_091500_1m0s.json.gz
Предупреждения и ошибки печатаются в том же однострочном формате.
git clone https://github.com/Headcrab/mssql2file.git
cd mssql2file
go build -o mssql2file ./cmd/main.gogo test ./...
task buildПроект распространяется под лицензией MIT — см. файл LICENSE для подробностей.
Мы приветствуем вклад! Пожалуйста, ознакомьтесь с:
- Документация: Wiki
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Сделано с ❤️ командой Headcrab