Wir müssen die SELECT-Abfrageergebnisse in eine CSV-Datei schreiben. Wie geht das mit T-SQL in SQL Server 2008 r2? Ich weiß, dass dies in SSIS möglich ist, aber aus bestimmten Gründen haben wir diese Option nicht.
Ich habe versucht, das im folgenden Artikel vorgeschlagene Verfahren zu verwenden, aber wenn ich das Verfahren ausführe, beklagt sich SQL, dass sys.sp_OACreate und sys.sp_OADestroy, die in diesem Verfahren aufgerufen werden, nicht ausgeführt werden können.
Wissen Sie, wie wir diese Komponenten einschalten können oder wie Sie mit T-SQL besser in eine Datei schreiben können?
Danke im Voraus.
quelle
Zur vorherigen Antwort hinzufügen, die Ihnen hilft, die Aktion zu automatisieren. Wenn Sie sie nur von Zeit zu Zeit in Management Studio benötigen, klicken Sie einfach mit der rechten Maustaste auf die Überschrift - Ergebnisse speichern unter -> wählen Sie eine CSV-Datei .
Wenn Sie dies für jede ausgewählte Anweisung tun möchten, die Sie ausführen, können Sie die Ausgaberichtung der Ergebnisse in eine Datei ändern. Verwenden Sie Extras -> Optionen -> Abfrageergebnisse - Ergebnisse in Datei .
Eine andere Möglichkeit, die einfach automatisiert werden kann und SSIS nutzt, ist die Verwendung der Exportdaten-Funktion von Management Studio. Klicken Sie mit der rechten Maustaste auf die Datenbank -> Aufgaben -> Daten exportieren. Es gibt dort einen Assistenten mit vielen Optionen. Sie sollten die Quelldatenbank, das Ziel und andere Optionen auswählen. Stellen Sie als Ziel sicher, dass es sich um eine "Flat-Datei" handelt, suchen Sie nach dem CSV-Typ und wählen Sie die gewünschte Formatierung aus. Am Ende erhalten Sie ein SSIS-Paket, das lokal gespeichert und bei Bedarf wiederholt werden kann.
quelle
Verwenden Sie T-SQL
Aber es gibt ein paar Einschränkungen:
quelle
Low Tech, aber ...
quelle
col1 + ',' + cast(col2 as varchar(10)) + ',' + col3
als Spaltenname behandelt und überall mit NULL ausgegeben.Es sieht so aus, als hätten Sie bereits eine akzeptable Lösung, aber wenn Sie DB-Mail eingerichtet haben, könnten Sie möglicherweise Folgendes tun:
Wenn Sie die Datei trotzdem per E-Mail versenden, können Sie einige Schritte sparen.
quelle
Dies kann leicht in einem dreistufigen Prozess durchgeführt werden:
Schreiben Sie Ihre Anfrage als
SELECT INTO
Anfrage. Dadurch werden Ihre Abfrageergebnisse im Wesentlichen in eine Tabelle exportiert.Beachten Sie, dass diese Tabelle nicht vorhanden sein kann , wenn die Abfrage ausgeführt wird, da dieser Abfragetyp die Tabelle als Teil der Ausführung erstellen möchte.
Verwenden Sie dann SSIS, um die Ergebnisse dieser Tabelle nach zu exportieren
.csv
. Mit dem SSIS-Export-Assistenten können Sie Ihr Trennzeichen usw. auswählen. Dies ist sehr praktisch, wenn Sie ein | verwenden Trennzeichen in Fällen, in denen die Ergebnismenge Kommas enthält.Rechtsklick auf
DB Name > Tasks > Export Data
Führen Sie nach Abschluss des Exports den
DROP TABLE
Befehl aus, um Ihre Protokolltabelle zu bereinigen.quelle
Ich verwende MS Access DoCMD, um CSVs von SQL Server zu exportieren. Es ist in der Lage, dies mit einem einzigen Befehl zu tun. Die Zugriffsdatenbank wird nur zum Aktivieren des Zugriffsbefehls verwendet. Die Leistung ist gut und als zusätzlicher Vorteil (nicht sicher, warum) wird eine schema.ini für die exportierte Tabelle erstellt.
Adam
quelle
Diese Prozedur generiert eine CSV-Datei mit der Ausgabe der Abfrage, die Sie als Parameter übergeben. Der zweite Parameter ist Ihr CSV-Dateiname. Stellen Sie sicher, dass Sie den Dateinamen mit einem gültigen schreibbaren Pfad übergeben.
Hier ist das Skript, um die Prozedur zu erstellen:
quelle