Verwendung von TAB als Spaltentrennzeichen in SQLCMD

7

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?

    
dawntrader 30.09.2010, 10:09
quelle

6 Antworten

14

In einer Batch-Datei funktioniert ein Tab zwischen den Anführungszeichen.

%Vor%

, um in einer PowerShell-Datei das Gleiche zu tun, verwenden Sie gemalte doppelte Anführungszeichen, die um eine maskierte Registerkarte gewickelt sind

%Vor%     
Doogie 25.05.2011 15:51
quelle
7

Es ist schwierig, unformatierte Ergebnisse von SQLCMD zu erhalten.

Wenn Sie eine tabulatorgetrennte Ausgabedatei erstellen möchten, ist BCP möglicherweise besser Wette:

%Vor%     
Ed Harper 30.09.2010 10:46
quelle
2

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!

    
dsz 12.06.2012 05:14
quelle
2

Hier finden Sie eine gute Antwort: SQLCMD-Ausgabedatei als tabulatorgetrennte Textdatei

  
  1. Öffnen Sie den Editor
  2.   
  3. 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
  4.   
  5. Markieren Sie & lt; TAB & gt; und drücken Sie dann die Tab Taste
  6.   
  7. Speichern Sie die Datei unter MyBatch.bat
  8.   
  9. Führen Sie MyBatch.bat
  10. aus   
    
JWally 18.01.2013 23:20
quelle
2

Eine ähnliche Antwort wie oben, aber es ist einfacher in einer Weise, die ich für signifikant halte.

  1. Öffnen Sie Ihren Texteditor
  2. Drücken Sie Registerkarte
  3. Markieren Sie den erstellten Whitespace (die Registerkarte)
  4. Kopieren Sie das und fügen Sie es an der Stelle in Ihrem SQL-Befehl
  5. ein

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).

    
David C. 04.11.2013 23:02
quelle
0

Um dies mit sqlcmd zu erreichen, müssen Sie das Tab-Zeichen wie folgt verwenden: \ t Eine Beispielabfrage, die eine einzelne SQL-Datenbanktabelle unter Verwendung eines Tabulatorbegrenzers in eine Textdatei exportiert, lautet wie folgt:

%Vor%     
Goldbug 18.12.2015 18:35
quelle

Tags und Links