В последние несколько месяцев я обнаружил, что передвигаю данные туда и сюда так сильно, что сценарии, оканчивающиеся на load(transform(extract()))
, стали моим хлебом насущным — печальная жизнь, как говорят некоторые!
Прошлой ночью я хотел импортировать кучу данных, хранящихся в SQL Server, в базу данных MySQL, но не хотел пачкать свои харды с графическим интерфейсом или PowerShell, потому что, ну, PowerShell.
В результате получилась mssqldump, небольшая утилита — аналогичная mysqldump
— для экспорта данных в TSV.
использование
mssqldump
делает одну вещь — и, надеюсь, хорошо — запускает запрос к базе данных и экспортирует результаты в виде TSV в стандартный вывод:
./mssqldump -q "SELECT Name, 1 as ID, RAND() as thing from sys.Databases" master 1 0.4318099474883688 tempdb 1 0.4318099474883688 model 1 0.4318099474883688 msdb 1 0.4318099474883688 test 1 0.4318099474883688
Вы также можете включить заголовки (имена столбцов) с опцией -c
:
./mssqldump -q "SELECT Name, 1 as ID, RAND() as thing from sys.Databases" Name ID thing master 1 0.4318099474883688 tempdb 1 0.4318099474883688 model 1 0.4318099474883688 msdb 1 0.4318099474883688 test 1 0.4318099474883688
Если вы хотите распечатать информацию о версии mssqldump
, вы можете просто указать v
или version
в качестве параметра запроса:
./mssqldump -qversion 1.0.0
Если вы хотите использовать mssqldump
, просто загрузите последний релиз с github и начните сбрасывать данные!
Пара сюрпризов
Здание mssqldump
было самостоятельным опытом, так как я обнаружил пару полезных вещей:
- В последнее время Microsoft убивает его — я хотел проверить это и смирился с запуском экземпляра SQL Server в Azure. Оказывается, простая
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Password123!' --net host -d --name mssql --rm microsoft/mssql-server-linux
делает свое дело! - зная, что я разрабатываю инструмент CLI на Golang, я подумал, что мне нужно прибегнуть к кобре — желая упростить ситуацию, я вместо этого выбрал go-flags, который имеет гораздо меньше функций, но также менее самоуверен и быстрее настраивается (cobra, вероятно, является излишним для приложения CLI только с одной командой)
Прощай!
Первоначально опубликовано на odino.org (22 мая 2018 г.).
Вы можете подписаться на меня в Твиттере — приветствуются разглагольствования! :)