Есть ли способ напрямую сжать / сжать результат из запроса SQL? - PullRequest
1 голос
/ 23 июля 2011

Отложено поздно. Я выкидывал относительно большие таблицы, используя SSMS.Обычный способ - установить Query->Results-To->File, «Выполнить», выбрать файл и запустить SQL-запрос.После того, как он заканчивается, я обычно заархивирую файл и затем перенесу его на свой локальный компьютер.Это имеет очевидные проблемы, когда хост-машине не хватает места во время ночных SQL-запросов.

Мне было интересно, есть ли способ сжать выходные данные из SSMS напрямую, не дожидаясь, пока он выгрузит результаты из всегозапрос.Какие-либо предложения?Хост-компьютер довольно ограничен в том, что позволяет мне работать на нем, поэтому предложение, которое требует минимального стороннего программного обеспечения, было бы здорово.

1 Ответ

7 голосов
/ 23 июля 2011

Вместо этого запустите запросы из sqlcmd и перенаправьте вывод в zip-строку командной строки (вам нужно установить один из них, см. Что такое хорошая утилита tar для Windows ?). Или вы можете использовать PowerShell, который может архивировать из коробки, включая ввод по трубопроводу, см. Сжать файлы с помощью Windows PowerShell, а затем упаковать гаджет боковой панели Windows Vista , для этого не требуются дополнительные инструменты, поскольку PS уже включен Ваш хост-сервер (хотя при втором чтении я думаю, что решения PS, как и в ссылке, все еще требуют сначала спущенный файл, не могут сжимать в файл).

Пример запроса с использованием sqlcmd и 7zip:

sqlcmd -S <DATABASE> -s <COLUMNSEP> -Q "SELECT ..." | .\7za.exe a -si <FILENAME>

Не забудьте использовать -Q (выполнить запрос и выйти), а не -q (выполнить запрос), иначе это не будет работать.

...