it-swarm.com.de

Konvertieren Sie die SSMS-Ausgangsdatei in TXT/CSV-Datei

Ich möchte mein großes SSMS-Abfrageergebnis (SQL Server Management Studio) (2,5 m Zeilen, 9 Felder) als .csv oder durch Kommas getrennte .txt-Datei (mit Überschriften) exportieren. (MS SQL Server 2005 Management Studio.)

Damit kann ich es dann entweder Zeile für Zeile in das VBA-Programm einlesen (um bestimmte Berechnungen mit den Daten durchzuführen) oder Abfragen in Excel (z. B. mit Microsoft Query) durchführen. Die Berechnungen sind kompliziert und ich bevorzuge es lieber woanders als mit SSMS. 

Wenn ich in SSMS „Abfrageergebnis in Text“ und eine kleine Antwort (einige Zeilen, z. B. bis zu 200.000 Zeilen), wähle, könnte ich natürlich einfach kopieren und in einen Texteditor einfügen. Für meine große Antwort hier konnte ich natürlich 200 Zeilen oder so 10 Zeilen gleichzeitig in einen Texteditor wie Ultra-Edit kopieren und einfügen. (Wenn ich alle 2,5 m auf einmal versuche, erhalte ich eine Warnmeldung im SSMS.) Für die Zukunft möchte ich jedoch eine elegantere Lösung.

Bei "Abfrage Ergebnis in Datei" schreibt SSMS immer in eine .rpt-Datei. (Wenn Sie mit der rechten Maustaste in das Ergebnisfenster klicken und "Speichern unter" wählen, führt dies zu einem Speicherfehler wie oben.) 

-> Es sieht also so aus, als ob meine einzige Möglichkeit wäre, dass das Ergebnis von SSMS in eine Datei ausgegeben wird, d. H.

Ich gehe davon aus, dass dieses .rpt eine Crystal Reports-Datei ist. Oder ist es nicht so? Ich habe keine Crystal Reports-Berichte auf meinem PC, daher kann ich die Datei nicht konvertieren.

Beim Öffnen des .rpt in Ultra-Edit sieht es gut aus. In Microsoft Query in Excel möchten die Überschriften jedoch nicht angezeigt werden.

Wenn ich die .rpt einfach mit VBA lese und schreibe, halbiert sich die Datei. (330meg bis 180meg). In Microsoft Query werden die Überschriften jetzt angezeigt (obwohl der erste Feldname einen lustigen Hauptcharakter hat, was mir in anderen, völlig anderen Situationen schon passiert ist). Ich scheine in der Lage zu sein, aussagekräftige Pivot-Tabellen in Excel zu erstellen.

Wenn ich jedoch diese neue Datei in Ultra-Edit öffne, werden chinesische Zeichen angezeigt! Könnte es noch irgendwo lustige Charaktere geben?

-> Gibt es vielleicht eine kostenlose (und einfache/sichere) Konverter-App, die irgendwo verfügbar ist. Oder sollte ich einfach darauf vertrauen, dass diese .txt-Datei für das Einlesen in mein VBA-Programm geeignet ist.

Vielen Dank

44
Relaxed1

Nun, mit Hilfe eines Freundes habe ich meine Lösung gefunden: Rpt-Dateien sind reine Textdateien, die in MS SQL Server Management Studio generiert wurden, jedoch mit UCS-2-Little-Endian-Kodierung anstelle von ANSI.

-> In Ultra-Edit wurde die Option "Datei, Konvertierungsoptionen, Unicode in ASCII" verwendet. Die Textdatei reduziert sich von 330 auf 180 Megabyte, Microsoft Query in Excel kann jetzt die Spalten sehen, und VBA kann die Datei- und Prozesszeilen lesen *.

P.s. Eine andere Alternative wäre gewesen, MS Access (der große Ergebnisse verarbeiten kann) zu verwenden und mit ODBC eine Verbindung zur Datenbank herzustellen. Dann müsste ich jedoch Jet-SQL verwenden, das weniger Befehle als das T-SQL von MS SQL Server Management Studio hat. Offensichtlich kann man in MS Access 2007 eine neue Datei als ADP erstellen und dann T-SQL für ein SQL Server-Back-End verwenden. In MS Access 2010 (auf meinem PC) scheint diese Option jedoch nicht mehr zu existieren. 

7
Relaxed1

Einfache Methode: Gehen Sie in SQL Server Management Studio zum Menü "Abfrage" und wählen Sie "Abfrageoptionen ..."> Ergebnisse> Text> Ändern Sie "Ausgabeformat" in "Kommagetrennt". Führen Sie nun Ihre Abfrage aus, um sie in eine Datei zu exportieren, und benennen Sie die Datei anschließend in .rpt in .csv um, und die Datei wird in Excel :) geöffnet.

53
nevetsvsx

Hier ist meine Lösung.

  • Verwenden Sie Microsoft SQL Server Management Studio
  • Konfigurieren Sie es zum Speichern von durch Tabulatoren getrennten .rpt-Dateien: Gehen Sie zu 'Query'> 'Query-Optionen'> 'Results'> 'Text'> 'Output Format 'und wählen Sie "Tab getrennt" (drücken Sie OK)

 enter image description here

  • Wenn Sie jetzt einen Bericht erstellen, verwenden Sie das Menü "Save With Encoding ..." und wählen Sie "Unicode" (standardmäßig "UTF8").

 enter image description here

  • Sie können die Datei jetzt mit Excel öffnen, und alles wird in Spalten angezeigt, ohne dass Escape- oder Fremdzeichenprobleme auftreten (beachten Sie, dass die Datei aufgrund der Unicode-Kodierung möglicherweise größer ist).
17
Simon Mourier

Sie können BCP verwenden.

Öffnen Sie eine Eingabeaufforderung, und geben Sie Folgendes ein:

SET Q="select * from user1.dbo.table1"
BCP.EXE %Q% queryout query.out -S ServerName -T -c -t
  • Sie können -U -P (anstelle von -T) für die SQL-Authentifizierung verwenden. 
  • Ihre App hat ein Problem mit UNICODE. Sie können eine Codepage mit -C {code page} erzwingen. Wenn Sie Zweifel haben, versuchen Sie es mit 850.

  • -t erzwingt Tabulator als Feldtrennzeichen, Sie können es für Komma ändern -t,

Das Schöne ist, Sie können dies direkt von Ihrem VBA-Shell-Befehl aus aufrufen. 

7
PollusB

Dies ist der empfohlene Weg, wie ich sehe, dass Sie es können.


Meine Quelle (Antwort von DavidAir)

Wählen Sie "Ergebnisse in Raster", klicken Sie dann mit der rechten Maustaste in das Raster und wählen Sie "Ergebnisse speichern unter ...". Dadurch wird eine CSV-Datei gespeichert.

Tatsächlich gibt es ein Problem damit, wenn einige Werte Kommas enthalten - die resultierende CSV wird nicht ordnungsgemäß mit Escapezeichen versehen. Die RPT-Datei ist eigentlich ziemlich schön, da sie Spalten mit fester Breite enthält. Wenn Sie über Excel verfügen, können Sie das Ergebnis in CSV relativ einfach konvertieren, indem Sie die RPT-Datei in Excel öffnen. Dadurch wird der Textimport-Assistent aufgerufen, und Excel würde die Spalten ziemlich gut erraten. Gehen Sie den Assistenten durch und speichern Sie die Ergebnisse als CSV.

4
Eon

Rufen Sie zuerst Ihre Daten in einer .rpt-Datei ab, indem Sie eine der oben genannten Methoden anwenden.

Standard-RPT mit Spalte mit festem Speicherplatz. (262 MB)

Mit Unicode getrenntes Komma. (52MB) - Ich habe das benutzt.

Ändern Sie die Dateierweiterung in .csv.

Öffnen/Importieren Sie es in Excel und überprüfen Sie die Daten. Der Dateityp ist "Text Unicode".

Speichern Sie es als CSV (Comma Delimited), was reduzierte Größe auf 25 MB.

0
Arvind Dhasmana

Ich empfehle die Verwendung des "SQL Server-Import- und -Export-Assistenten" aus folgenden Gründen:

  • Die Ausgabedatei hat im unteren Bereich keine Statusmeldung wie eine RPT-Datei (dh "(100 betroffene Zeilen)"), die Ihren Datenimport durcheinander bringen könnte
  • Möglichkeit, benutzerdefinierte Zeilen- und Spaltenbegrenzer mit einer Länge von mehr als 1 Zeichen anzugeben
  • Möglichkeit zur Angabe einer benutzerdefinierten Zuordnung von Quelle zu Ziel (dh, der Vorname der Spalte kann in der CSV dem Vornamen zugeordnet werden)
  • Möglichkeit, eine direkte Übertragung zu jeder anderen Datenbank durchzuführen, auf die vom SSMS-Computer aus zugegriffen werden kann
  • Möglichkeit zur expliziten Auswahl der Dateicodierung und des Gebietsschemas

Sie können darauf zugreifen, indem Sie im Management Studio mit der rechten Maustaste auf Ihre Datenbank klicken (Sie müssen mit der rechten Maustaste auf die Datenbank und nicht auf die Tabelle klicken) und Aufgaben> Daten exportieren auswählen.

Selecting the data export tool from the SSMS object Explorer

Wenn Sie nach einer Datenquelle gefragt werden, können Sie den "SQL Server Native Client" auswählen. Wenn Sie zur Auswahl eines Ziels aufgefordert werden, können Sie "Flat File Destination" auswählen.

Anschließend werden Sie aufgefordert, eine zu verwendende Tabelle oder Abfrage anzugeben.

Weitere Informationen zum Tool finden Sie hier:

https://docs.Microsoft.com/de-de/sql/integration-services/import-export-data/start-the-sql-server-import-and-export-wizard?view=sql- Server-2017

0
Emeka

In meinem Fall führe ich eine Abfrage auf SSMS aus (zuvor drücken Sie STRG + UMSCHALT + F). Das Ergebnis öffnet ein Fenster, um es als rpt-Datei zu speichern. Ich konnte es also nicht lesen (keine Crystal Report-Installation auf meinem Computer). ..nechstes Mal, als ich die Abfrage ausführte, speicherte ich sie als (alle Dateien) mit der Erweiterung * .txt und konnte sie als Textdatei lesen.

0
user5293686