Wie kann ich ein Abfrageergebnis in eine CSV-Datei in SQL Server 2008 exportieren?
sql-server-2008
Gold
quelle
quelle
Antworten:
Hier ist eine Vollbildversion dieses Bildes unten
Dadurch werden Ihre Abfrageergebnisse als durch Kommas getrennter Text angezeigt.
So speichern Sie die Ergebnisse einer Abfrage in einer Datei: Strg + Umschalt + F.
quelle
Ctrl+Shift+F
, ändert sich nur der Ausgabemodus. Die Ergebnisse werden nicht beeinflusst, wenn Sie die Abfrage bereits ausgeführt haben. Damit dies wiedergegeben wird, müssen Sie die Abfrage erneut ausführen. Wenn Sie es im Modus "Ergebnisse in Datei" ausführen, sollten Sie gefragt werden, wo Sie die Ergebnisse speichern möchten.Ich weiß, das ist ein bisschen alt, aber hier ist ein viel einfacher Weg ...
Führen Sie Ihre Abfrage mit den Standardeinstellungen aus (legt die Ergebnisse im Rasterformat fest, wenn Ihre nicht im Rasterformat vorliegen, siehe unten)
Klicken Sie mit der rechten Maustaste auf die Rasterergebnisse und klicken Sie auf "Ergebnisse speichern unter" und speichern Sie sie.
Wenn Ihre Ergebnisse nicht im Rasterformat vorliegen, klicken Sie mit der rechten Maustaste auf die Stelle, an der Sie die Abfrage schreiben, bewegen Sie den Mauszeiger über "Ergebnisse an" und klicken Sie auf "Ergebnisse an Raster".
Beachten Sie, dass Sie die Spaltenüberschriften NICHT erfassen!
Viel Glück!
quelle
Sie können PowerShell verwenden
quelle
Add-PSSnapin SqlServerCmdletSnapin100
undAdd-PSSnapin SqlServerProviderSnapin100
.Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
Install-Module -Name SqlServer
(aber ich musste diese Cmdlets nicht einrasten). Außerdem hatte ich die Befehle in einem Skript gespeichert, das erst ausgeführt wurde, nachdem ich die Ausführungsrichtlinie geändert hatte :Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
.RemoteSigned
Ausführungsrichtlinie ausreichen wird.Wenn die betreffende Datenbank lokal ist, ist das Folgende wahrscheinlich die robusteste Methode, um ein Abfrageergebnis in eine CSV- Datei zu exportieren (dh Ihnen die größte Kontrolle zu geben).
PowerShell-Skript
Führen Sie PowerShell als Administrator aus
quelle
Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
MS Excel -> Daten -> Neue Abfrage -> Aus Datenbank .. Folgen Sie den Schritten
quelle
Aufbauend auf der Antwort von NS habe ich ein PowerShell-Skript, das in eine CSV- Datei exportiert, wobei die Anführungszeichen um das Feld und das Komma getrennt sind und die Header-Informationen in der Datei übersprungen werden.
Die ersten beiden Zeilen ermöglichen die Verwendung des Befehls let von Invoke-SqlCmd .
quelle
Verwenden Sie T-SQL :
Es gibt jedoch einige Einschränkungen:
Sie müssen den Microsoft.ACE.OLEDB.12.0-Anbieter verfügbar haben. Der Jet 4.0-Anbieter wird auch funktionieren, aber er ist uralt, also habe ich stattdessen diesen verwendet.
Die CSV-Datei muss bereits vorhanden sein. Wenn Sie
HDR=YES
headers ( ) verwenden, stellen Sie sicher, dass die erste Zeile der CSV-Datei eine durch Trennzeichen getrennte Liste aller Felder ist.quelle
Die Verwendung der nativen SQL Server Management Studio-Technik zum Exportieren in CSV (wie von @ 8 KB vorgeschlagen) funktioniert nicht, wenn Ihre Werte Kommas enthalten, da SSMS Werte nicht in doppelte Anführungszeichen setzt. Eine robustere Methode, die für mich funktioniert hat, besteht darin, die Ergebnisse einfach zu kopieren (in das Raster klicken und dann STRG-A, STRG-C) und in Excel einzufügen. Speichern Sie dann als CSV-Datei aus Excel.
quelle
Sie können QueryToDoc ( http://www.querytodoc.com ) verwenden. Sie können eine Abfrage für eine SQL-Datenbank schreiben und die Ergebnisse - nachdem Sie das Trennzeichen ausgewählt haben - nach Excel, Word, HTML oder CSV exportieren
quelle
as @Slogmeister Extraordinaire Quoted ist korrekt.
Es muss 1> Datei mit Spalten 2 vorhanden sein. 2> Office muss installiert sein
Fehler konfrontiert
1
Meldung 7303, Ebene 16, Status 1, Zeile 1 Das Datenquellenobjekt des OLE DB-Anbieters "Microsoft.ACE.OLEDB.12.0" für den Verbindungsserver "(null)" kann nicht initialisiert werden. "
64 Bit http://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine_x64.exe
32 Bit http://download.microsoft.com/download/f/d/8/fd8c20d8-e38a-48b6-8691-542403b91da1/AccessDatabaseEngine.exe
2
Meldung 15281, Ebene 16, Status 1, Zeile 1 SQL Server hat den Zugriff auf STATEMENT 'OpenRowset / OpenDatasource' der Komponente 'Ad Hoc Distributed Queries' blockiert, da diese Komponente im Rahmen der Sicherheitskonfiguration für diesen Server deaktiviert ist. Ein Systemadministrator kann die Verwendung von "Ad-hoc-verteilten Abfragen" mithilfe von sp_configure aktivieren. Weitere Informationen zum Aktivieren von "Ad-hoc-verteilten Abfragen" finden Sie in den SQL Server-Onlinedokumentationen nach "Ad-hoc-verteilte Abfragen".
quelle
Wenn Sie Powershell nicht verwenden möchten, ist diese Antwort eine Variation der großartigen Antwort von 8 KB. Der einzige Unterschied besteht darin, dass Sie anstelle von CSV als Ausgabeformat Tab Delimited auswählen. Auf diese Weise werden Zellen in Excel nicht übersprungen, wenn Ihre Daten Kommas enthalten. Wenn Sie das Standardtrennzeichen von Excel auf Registerkarten festgelegt haben, können Sie einfach alle SSMS-Abfrageergebnisse (STRG-A, STRG-C) kopieren und in Excel einfügen (Sie müssen nicht als Datei speichern und in Excel importieren) ):
Jetzt können Sie Ihre Abfrage ausführen, dann STRG-A ausführen, um alle Ergebnisse auszuwählen, dann STRG-C, um sie in die Zwischenablage zu kopieren, dann zu Excel 2013 wechseln (möglicherweise auch 2007, nicht sicher) und einfügen - vorausgesetzt, Excel ist die Standardeinstellung Das Trennzeichen ist auf die Registerkarte gesetzt.
Bild des Bildschirms mit den SSMS-Abfrageoptionen
quelle
Ja, all dies ist möglich, wenn Sie direkten Zugriff auf die Server haben. Was aber, wenn Sie nur von einem Web- / Anwendungsserver aus auf den Server zugreifen können? Nun, die Situation war bei uns schon lange her und die Lösung war SQL Server Export to CSV .
quelle