Подтвердить что ты не робот

Как запустить sql script файл с помощью sqlcmd и вывести на оболочку и файл

Я пытаюсь запустить sql script из файла с помощью sqlcmd, используя следующую команду:

sqlcmd -S <server> -d <database> -i <input file> -o <output file> 
      -U <user> -P <password>

Я запускаю свой sql файл и выводя его в файл журнала.

Проблема в том, что это изменение вывода sqlcmd в файл.. и я хочу получить вывод также в оболочку.

4b9b3361

Ответ 1

@Noam,

В среде UNIX есть стандартная программа, которая читает из stdin и записывает в stdout и в указанный файл: tee. В следующем примере перечислены текущие директории для stdout и "myfile":

$ ls | tee "myfile"

Есть несколько портов с открытым исходным кодом для окон, например wintee, и даже тривиально сделать вашу собственную реализацию (см. здесь), но PowerShell на самом деле уже имеет эту встроенную утилиту: Tee-Object. Следующий пример аналогичен предыдущему, в PowerShell:

PS [c:\tmp]
> dir | tee myDirContents.txt

Следовательно, следующая команда выполнит myscript.sql в myserver, используя текущие учетные данные Windows, и ее результат будет выводиться либо на консоль , либо на "result.txt":

PS [c:\tmp]
> sqlcmd -i mysrcipt.sql -S myserver -E | tee "result.txt"

Ответ 2

@Noam, хотя я не мог найти способ дублирования обработчика STDOUT, одним из решений, которое может решить вашу проблему, является выполнение sql script в выходной файл (т.е. result.txt), а затем используйте type result.txt, чтобы напечатать его в STDOUT.

c:>sqlcmd -i mysrcipt.sql -o result.txt -S myserver -E
c:>type result.txt

Если вам действительно нужно дублировать обработчик (возможно, команда занимает много времени, и вы не хотите ждать, пока она не закончится, прежде чем получить первые строки), вы можете сделать простую программу для копирования входов из STDIN в STDOUT, а также в файл. Затем вы можете переписать команду как:

c:>sqlcmd -i mysrcipt.sql -S myserver -E > duplicate.exe "result.txt"

Ответ 3

Этот код может использоваться для подключения, требующего аутентификации

sqlcmd -S "server_name" -d "database_name" -i "input_file" -o "output_file" -U "user_name" -P "password"