wie man Komma getrennte Werte in einer einzelnen Zelle beim Export von SQL-Ergebnissen in CSV hat

Ich versuche, meine Abfrageergebnisse auf meinen lokalen Pfad mit bcp cmd zu exportieren.

SET @CMD = 'bcp "select * from ##OutputTable" queryout "' + @Path + '\Temp_RawData.csv" -S ' + @@SERVERNAME + ' -T -t , -c' SET @HEADERCMD = 'bcp "SELECT * from ##cols" queryout "' + @Path + '\Temp_Headers.csv" -S ' + @@SERVERNAME + ' -T -t , -c' SET @Combine = 'copy "' + @Path + '\Temp_Headers.csv" + "' + @Path + '\Temp_RawData.csv" "' + @Path + '\MyExcel.csv"' SET @DelCMD = 'del "' + @Path + '\Temp_*.csv"' 

Jedoch eines der resultierenden Feld Bemerkungen enthält Wert wie

Job abgeschlossen gut, Nächster Lauf wird @ 6PM.

Aber meine exportierte Ergebnismenge zeigt diesen Wert als zwei getrennte Felder, wie sie durch Komma getrennt ist. Dadurch werden alle Werte verlegt. Wie kann man das korrigieren? Wenn meine Ergebnismenge kein Feld enthält, das nicht Komma getrennt ist, sieht das Ergebnis gut aus.

Mit BCP gibt es – AFAIK – keine Möglichkeit, dem Trennzeichen zu entkommen.

Deshalb solltest du immer

  • benutze QOUTENAME , um Namen zu erhalten, anstatt mit qoutes als character in deinen String zu verknüpfen
  • Verwenden Sie doppelte qoutes um jeden Text.

Ihr Export sollte aussehen

 OtherValues,"Job completed fine,Next run will be @6PM",OtherValues 

BCP wird alle innerhalb der qoutes als einen String behandeln …

Hier gibt es ein paar Optionen.

Erste Option: Du kannst einen anderen Feldterminator verwenden, wie zB Tab, |, $, etc … aber du musst dafür sorgen, dass es einzigartig ist und in keinem Text erschienen ist. Sie können mehrere character, um ein Trennzeichen einzigartig, aber Excel kann nur mit Single-character-Trennzeichen zu importieren.

Zweite Option: Du kannst den Textqualifikator (") im Excel-Import und QUOTENAME ([Spalte], CHAR (34)) in deiner Abfrage für alle Textfelder verwenden