it-swarm.com.de

So speichern Sie das SQL-Abfrageergebnis in einer XML-Datei auf der Festplatte

Ich möchte eine Tabelle von SQL Server 2012 in eine XML-Datei exportieren. Ich habe Nice answer und here gefunden, wie XML aus der SQL Server-Datenbankabfrage resultiert, aber ich vermisse immer noch, wie dieses Ergebnis physisch in einer Datei gespeichert werden kann.

SQL-Abfrage ist:

SELECT [Created], [Text]
FROM [db304].[dbo].[SearchHistory]
FOR XML PATH('Record'), ROOT('SearchHistory')

Ich verwende Microsoft SQL Server Management Studio, um dieses Ergebnis auszuführen. Ich sehe das XML in einem Ergebnisfenster, kann es aber nicht speichern.

Es gibt "Ergebnis speichern unter ..." im Kontextmenü, aber bei 98900 Zeilen geht mir mit dieser Option der 8-GB-Speicher aus.

Gibt es eine Möglichkeit, diese Abfrage direkt in der XML-Datei auf der Festplatte zu speichern?

11
Tomas Kubes

Sie können auch die erweiterten gespeicherten Prozeduren Ihres SQL Servers verwenden, um sie in eine XML-Datei zu exportieren.

Sie müssen den SQL-Server jedoch konfigurieren, bevor Sie ihn verwenden können.

EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE
EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE

Sobald xp_cmdshel im SQL Server aktiviert ist. Sie können den folgenden Befehl verwenden, um die Daten in eine XML-Datei zu exportieren.

EXEC xp_cmdshell 'bcp "SELECT [Created], [Text] FROM [db304].[dbo].[SearchHistory] FOR XML PATH(''Record''), ROOT(''SearchHistory'')" queryout "C:\bcptest.xml" -T -c -t,'
10
M.Ali

Sie können in SSMS immer die Option "Results to File" verwenden:

enter image description here

Das sollte die Ergebnisse der Abfrageausführung direkt in eine Datei auf der Festplatte ausgeben

5
marc_s

Um diesen Job in SQL Server 2012 ist ein Schmerz im Arsch. Schließlich werde ich es auf SQL Server 2014 aktualisieren, da SQL UTF-8-Dateien in sqlcmd bereits unterstützt werden.

  1. Erstellen Sie eine SQL-Abfrage und speichern Sie sie in der Datei.
  2. führen Sie Folgendes aus:

    sqlcmd -S -U sa -P sapassword -i eingabedateiname -C65001 -o ausgabedateiname

1
Tomas Kubes