SQLCMD unterstützt den Parameter -s, um das Spaltentrennzeichen anzugeben, aber ich konnte nicht herausfinden, wie das Tabulatorzeichen (CHAR (9)) dargestellt wird. Ich habe Folgendes versucht, aber beides funktioniert nicht:
%Vor%Irgendwelche Ideen wie man das in SQLCMD macht?
Ich habe viele Male versucht, das eigentliche TAB-Zeichen an SQLCMD zu übergeben, und ich kann es einfach nicht dazu bringen, es zu nehmen. Mein bisher beliebtestes Problem besteht darin, SQLCMD das ASCII "Unit Separator" (hex 0x1F) zu übergeben und in der Befehlszeile durch Eingabe von Ctrl-_ einzugeben (Steuerunterstrich, der auf einer US-Tastatur zu ctrl-shift wird) -'- '(das' - 'neben der' 0 'in der obersten Zeile der Tastatur).
Der Vorteil der Verwendung des Unit Separator ist, dass es höchst unwahrscheinlich ist, dass er in Text jeder Art vorhanden ist und speziell für diesen Zweck entworfen wurde (siehe Ссылка )
Nachdem ich SQLCMD dazu gebracht habe, das für mich zu tun, übertrage ich es dann über einen Unix-artigen Übersetzungsbefehl wie folgt:
%Vor%Das \ 037 ist oktal für das 'Unit Separator', und \ t stellt das Tab-Zeichen dar, 'TR' wird BEIDE davon für uns übersetzen, wir müssen uns nicht auf irgendwelche Tricks in unseren Skripten oder Shells verlassen .
Um "tr" in Windows zu erhalten, können Sie das CoreUtils-Paket von GnuWin32 installieren (siehe Ссылка ) oder gehen Sie schwer und installieren Sie eine vollständige Unix-Umgebung wie Cygwin (http://cygwin.com/).
Wenn wir die zwei zusammensetzen, bekommen wir:
%Vor%und dies gibt Ihnen Ihre Ausgabe mit Tabs.
Sehen Sie sich die anderen Optionen an, die ich oben verwendet habe. Sie sind wichtig, um saubere Ausgaben von SQLCMD zu erhalten (in der Reihenfolge; keine Header, Leerzeichen, CRLF zu Leerzeichen, Fehler zu STDERR (nicht Ihre Ausgabedatei) !) und die '^ _' ist, wie das Unit Separator in der Befehlszeile angezeigt wird). Sie müssen auch "SET NOCOUNT ON;" hinzufügen. zu Ihrer Abfrage oder Ihrem SQL-Skript, sonst erhalten Sie die Zeilenanzahl als eine Testmeldung, die in Ihrer Ausgabe erscheint!
Hier finden Sie eine gute Antwort: SQLCMD-Ausgabedatei als tabulatorgetrennte Textdatei
- Öffnen Sie den Editor
- Fügen Sie Folgendes ein:
sqlcmd -S (local) -E -s"<TAB>" -Q "select * from sys.dm_exec_query_stats" -o MyOutput.txt -h-1 -W
- Markieren Sie & lt; TAB & gt; und drücken Sie dann die Tab Taste
- Speichern Sie die Datei unter MyBatch.bat
- Führen Sie MyBatch.bat
aus
Eine ähnliche Antwort wie oben, aber es ist einfacher in einer Weise, die ich für signifikant halte.
Obwohl diese Registerkarte als ein großes Stück Leerzeichen dargestellt wird, handelt es sich um ein einzelnes Zeichen.
Die andere Antwort enthielt einige unnötige Dinge, um den gesamten Befehl mit "<TAB>"
einzufügen. Ich denke, das wirft die Leute ab (es hat mich sicherlich abgeworfen).
Tags und Links sql-server sqlcmd