ich mehrmals versucht haben, die tatsächliche TABULATORZEICHEN um SQLCMD, und ich einfach weitergeben kann es nicht hinkriegen. 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 der' Unit Separator 'ist, dass es höchst unwahrscheinlich ist, dass sie in Text vorhanden ist Beschreibung und speziell für diesen Zweck entwickelt wurde (siehe https://en.wikipedia.org/wiki/Delimiter)
Nachdem SQLCMD bekam das für mich zu tun, mich dann Rohr es Ausgang wenn ein Unix-Befehl übersetzen als:
tr '\037' '\t'
Das \ 037 ist oktal für das 'Unit Separator', und \ t stellt das Tab-Zeichen dar, 'TR' wird BEIDE von diesen für uns übersetzen, wir müssen uns in unseren Skripten oder Shells nicht auf irgendwelche Tricks verlassen.
Um 'tr' unter Windows zu erhalten, können Sie das CoreUtils-Paket von GnuWin32 installieren (siehe http://gnuwin32.sourceforge.net/packages/coreutils.htm) oder schwer arbeiten und eine vollständige Unix-Umgebung wie Cygwin (http://cygwin.com/) installieren.
Putting die beiden zusammen erhalten wir:
sqlcmd ... -h-1 -W -k -r1 -s^_ ... | tr '\037' '\t'
und dies wird Ihnen Ihre Ausgabe mit Tabs. Die anderen Optionen, die ich oben verwendet habe, sind wichtig für den Versuch, eine saubere Ausgabe von SQLCMD zu erhalten (in der Reihenfolge; keine Header, Leerzeichen, CRLF zu Leerzeichen, Fehler zu STDERR (nicht Ihre Ausgabe) Datei!) 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!
Groß Antworten!!!! Für andere, die dies in PowerShell tun möchten - beachten Sie, dass das Leerzeichen nach "-s" wichtig ist. :) –