2012-02-06 23 views
12

Próbuję uruchomić skrypt SQL z pliku przy użyciu sqlcmd, stosując następujące polecenie:Jak uruchomić skrypt sql przy użyciu sqlcmd i wyjście zarówno skorupy i złożyć

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

biegnę My SQL plik i wyjście do pliku dziennika.

Problem polega na tym, że należy zmienić wyjście sqlcmd na plik ... i chcę, aby dane wyjściowe również trafiły do ​​powłoki.

+0

znalazłeś odpowiedź na to? proszę, jeśli go masz, odpowiedz tutaj i odpowiedz na moje pytanie: http://stackoverflow.com/questions/9319025/sqlcmd-with-output-file-and-screen-output tak źle zagłosuj na twoją odpowiedź, jeśli to działa. Dzięki! :) –

+0

@Leandro przepraszam nie znalazłem jeszcze odpowiedzi .... –

Odpowiedz

7

@Noam,

Jest to standardowy program w UNIX świecie, który odczytuje z stdin i pisze do stdouti do określonego pliku: polecenie tee. Poniższy przykład wymienia katalog bieżący na stdout i „myfile”:

$ ls | tee "myfile" 

Istnieją pewne porty open source dla Windows, jak wintee, i to nawet trywialny zrobić własną implementację (patrz here) , ale PowerShell rzeczywiście już to narzędzie wbudowane w: the Tee-Object .Powierzchnia Poniższy przykład jest analogiczny do poprzedniego, w PowerShell:

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

Stąd następujące polecenie wykona myscript.sql do mójserwer, użyciem aktualnych okien poświadczeń i jej efektem będzie wyjście albo do konsoli i do „Result.txt”:

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

@Noam, aczkolwiek nie mogłem znaleźć sposób na powielenie obsługi stdout jedno rozwiązanie, które może rozwiązać Ci problemu jest wykonanie skryptu SQL do pliku wyjściowego (tj result.txt), a następnie użyć type result.txt wydrukować go do STDOUT.

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

Jeśli naprawdę trzeba powielać obsługi (może komenda zajmuje dużo czasu i nie chcesz czekać, aż skończy, zanim się pierwsze wiersze), można dokonać prostego programu do kopiowania wejścia od STDIN do STDOUT, a także do pliku. Następnie można przepisać komendy jak:

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

Ten kod może być użyty do połączenia, które wymagają uwierzytelnienia

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

-U i -P jest dla serwera lub bazy danych? – ExploringApple