Wie man den export-Ausgabe in "echten" CSV-format in SQL Server Management Studio?
Ich habe eine Abfrage, die ich ausführen in SQL Server Management Studio eine Verbindung mit einer SQL Server 2005-Datenbank). Ich möchte den export der Daten im CSV-format. Nicht Möchtegern-CSV-format, wo Sie stecken Sie nur ein Komma zwischen den einzelnen Spalten, sondern "echte" CSV-format, wo Sie setzen Sie Anführungszeichen um deine strings. Auf diese Weise können Sie export von Daten, die durch Kommas oder Anführungszeichen in es.
Allen Beispielen, die ich sehe, beschränken sich nur auf die Möchtegern-format. Ich kann nicht herausfinden, wo die option zu zitieren strings ist.
Wenn SSMS ist wirklich unfähig diese grundlegenden feat, gibt es andere tools, tun Sie es einfach? Ich will nicht, um zu schreiben, ein C# - Programm jedes mal muss ich eine "Daten-dump".
- Weil es nervt mich so sehr, dass ich ein Programm geschrieben, um meine eigenen verwendet, die eine korrekte CSV-writer: github.com/deeja/SQLtoCSV/releases
- Wie auf der Erde diese nicht behoben sind...
Du musst angemeldet sein, um einen Kommentar abzugeben.
In SSMS 2012 gibt es eine option, für diese, unter Extras -> Optionen -> Query-Ergebnisse -> SQL Server - - > Ergebnisse in Raster, das nennt sich "Zitieren, Liste von strings mit Trennzeichen beim speichern .csv-Ergebnisse". Ich weiß nicht, wie lange solch eine option gab, aber ich bin verwirrt durch zwei Dinge:
Es nur trotzt glauben, dass das default-Verhalten ist, um CSV-export-das ist unmöglich, korrekt importieren. Ich habe bemerkt, Excel tut das gleiche, ich werde gehen, sehen, wenn, die haben eine option auch.
In der Zwischenzeit, Dank der Kollege wies mich auf diese bizarre bit-Funktionalität, wenn ich war, Sie schimpfen darüber, wie das CSV-exporter war völlig nutzlos, und das war der beste link, den ich gefunden hatte, über Sie also dachte ich, ich würde mal sagen, die wissen hier zum nutzen künftiger Forscher.
UPDATE
Einen screenshot weiter unten:
Save Results As..
auf das gleiche Ergebnis vor/nach änderung des Verhaltens macht es keinen Unterschied, das CSV-Format exportiert.Meinem normalen work-around ist, um es in der Abfrage:
Können Sie erstellen, die in einer benutzerdefinierten Funktion, um es ein wenig einfacher, aber Sie müssen erstellen Sie eine separate Funktion für jeden Datentyp.
'"' + REPLACE(CAST(column AS VARCHAR), '"', '""') + '"'
. So bin ich nicht besorgt über schreitung ein Feld.NVARCHAR
wenn der ursprüngliche Typ wurdeNVARCHAR
.Verschiedene Kombinationen dieser Einstellungen können bringen Ergebnisse in die Ausgabe, dass falsche oder unvollständige Daten. Dies ist, da Microsoft nicht denke, dass es wichtig genug war, um diese Probleme zu beheben. Ich bin nur zu erklären, was passiert mit CSV-Dateien, wenn Sie die Ergebnisse in eine Datei.
Um gute Ergebnisse zu erhalten, tun Sie Folgendes:
Öffnen Sie eine neue Abfrage-Fenster (neuen tab/session) ... wenn Sie das nicht tun, Konfiguration unten ist verloren, und legen Sie zurück auf die Standardwerte
Schreiben Sie die Anfrage zu behandeln, die quote innerhalb der quote, und auch wickeln Sie alle string-Datentypen in Anführungszeichen. Auch bewusst sein, dass verschiedene DBMS und Programmiersprachen Grammatiken, akzeptiert eine unterschiedliche syntax für eine geschützte doppelte Anführungszeichen (falls Sie diese Ausgabe als Eingabe für ein anderes system). Einige verwenden
\"
. Einige verwenden""
. XML verwendet"
;. Wahrscheinlich ein Grund, entschied sich Microsoft, dies zu ignorieren-Funktionalität, so dass Sie nicht haben, um mit den Argumenten... Wenn Escape-Sequenz des neuen Systems ist
""
... Wenn Escape-Sequenz des neuen Systems ist
\"
.Konfiguration:
Abfrage-Optionen - > Ergebnisse - > "Enthalten Spaltenheader beim kopieren oder speichern der Ergebnisse" geprüft
Abfrage-Optionen - > Ergebnisse - > "Zitat-Liste von strings mit Trennzeichen beim speichern .csv-Ergebnisse" - GEBROCHEN; NICHT VERWENDEN!
Abfrage-Optionen - > Ergebnisse - > andere deaktiviert
Abfrage-Optionen - > Ergebnisse - > Text > durch Komma getrennt (Einstellung oben rechts)
Abfrage-Optionen - > Ergebnisse - > Text > "Spaltenüberschriften im ResultSet" geprüft
Abfrage-Optionen - > Ergebnisse - > Text > andere deaktiviert
Abfrage-Optionen - > Ergebnisse - > Text > "Maximale Anzahl von Zeichen in jeder Spalte angezeigt wird" - auf max Länge, so dass strings nicht gekürzt.
Query - > Ergebnisse in Datei (dies ist ein Umschalten zwischen allen 3 Optionen)
Abfrage ausführen (F5)
Eingabeaufforderung für Datei-name des Berichts
Datei öffnen, um Blick auf die Ergebnisse
Wie fühlen Sie sich über Export im CSV-SSMS per PowerShell? Dieser Beitrag beschreibt die Vorgehensweise zum definieren einer externen tool in SSMS, sendet die aktuell ausgewählten Abfrage an ein PowerShell-Skript, welches exportiert Sie in eine CSV-Datei.
Es ist traurig, die option ist erhältlich in einer verwirrenden Zustand, aber nicht perfekt funktionsfähig. Folgendes funktioniert zumindest.
text qualifier
als Doppel-Zitatsollten Sie gut zu gehen!
quotename
. Zum Glück nicht in Anführungszeichen aber. Und ich war, was auf eine native option, statt der Abhängigkeit von externen Lösungen.Kenne ich keinen Weg, dies zu tun mit SSMS allein. Ich weiß, TOAD (http://www.toadworld.com/) hat eine CSV-option. Nicht sicher, ob es eine Escape-format. Wenn SSIS ist eine option, Sie können konvertieren in ein format, das entweicht strings (true CSV), aber das ist nicht in SSMS.
Wenn Sie zu haben schreiben Sie ein C# - Programm, ich würde eine Abfrage der Tabelle und dann läuft die Abfrage, wie die Metadaten Ahnung, was brauchen die Flucht.
Normalerweise benutze ich diese Art der Funktion:
Und wählen Sie im ich es hier:
Und in SMS-Nachrichten 2012 einfach mit der Rechten Maustaste auf ein raster und die Ergebnisse speichern oder kopieren Sie alle grid (Strg-A und Strg-V nach Excel.
Es ist die einfachste Möglichkeit zum verwalten von Daten in z.B. MS Excel ohne Probleme mit den Spalten.
Natürlich müssen Sie klicken Sie auf "Zitieren, Liste von strings mit Trennzeichen beim speichern .csv-Ergebnisse" bei der Tools -> Optionen -> Query-Ergebnisse -> Sql Server - - > Ergebnisse in Raster und erhöhen die Maximale Anzahl von Zeichen Abgerufen, wenn Sie es brauchen.
Vielleicht nicht für deine Anwendung, aber ich in der Regel dieses problem umgehen, indem Sie den Export in eine tab-delimited-format. Übersehen Sie nicht diese einfache Lösung, wenn es gilt, für Sie.
Als alle der oben genannten Einstellungen nicht beheben konnte die CSV-mein SSMS (SQL Server 2014) generiert und Export eine tab-getrennte Datei " machten es nicht besser, ein Kollege und ich machten eine Konverter-script (Ruby) zum konvertieren des SSMS in lesbare CSV-CSV.
Es hält Codierung, Trennzeichen und Zeilenumbrüche der original-Datei und nimmt sogar eine exakte byte-match-Bewertung am Ende (es wird eine Datei erstellt, in der SSMS-format aus den analysierten (!) input-Datei und vergleicht beide Dateien).
https://gist.github.com/gr8bit/62202ea89a7e3aff67df2ff080ee8e88
Kontakt mit mir auf github, falls Sie Fehler entdecken, bitte. Prost!
Ich denke, die einfachste Möglichkeit ist, öffnen Sie excel, und importieren Sie die Daten aus der SQL-Verbindung, anstatt mit SSMS-export....
Ich bin mit SSMS 2016 und es verfügt nicht über die option "Zitat-Liste von strings mit Trennzeichen beim speichern .csv-Ergebnisse" vermutlich, weil es nicht funktioniert
Ron