2010-11-03 22 views
11

Wie kann ich eine Tabelle aus einer SQL Server 2000-Datenbank in eine SQL-Datei als eine Reihe von INSERT INTO-Anweisungen exportieren?Wie exportiere ich die Daten einer Tabelle in INSERT-Anweisungen?

Eines der Felder in der Tabelle ist ein Text-Datentyp und enthält HTML, so dass dies von Hand ziemlich zeitaufwendig wäre.

Ich habe Zugriff auf SQL Server Management Studio 2008, um auf die SQL Server 2000-Datenbank zuzugreifen.

Antwort

17

Schauen Sie sich die SSMS Tool Pack - es ist ein großer, FREE Add-on für SQL Server Management Studio, die eine Menge Dinge tut - unter anderem der INSERT-Anweisungen aus einer bestimmten Tabelle generieren.

alt text

+0

Wow, dieses Add-In sieht gut aus, ich hoffe, dass es auch mit Express Edition funktioniert. –

+2

Ab SQLSMS 2012 ist das Tool nicht mehr kostenlos, obwohl es ein 30-Tage-Zeitfahren bietet. Siehe die Antwort von mobill, es gibt einen eingebauten Weg, dies zu erreichen. – Jerther

2

Wenn Sie anderes DB-Management verwenden können apps der schnellste Weg wäre ein Werkzeug wie SqlDbx werden, der einen eingebauten „Export als Einsätze (SQL)“ Funktion (nur eine Abfrage wie SELECT * FROM Table ausführen und verwenden Sie dann die Kontextmenü aus dem Ergebnisraster).

Wenn Sie SQL Management Studio bleiben müssen, dann können Sie eine gespeicherte Prozedur wie diese verwenden:

http://vyaskn.tripod.com/code/generate_inserts.txt

Es ist für jede Zeile des Ziel einen Satz von Ergebnissen mit der SQL-Anweisung INSERT erzeugt Tabelle. Dann können Sie die Ergebnisse in eine Datei exportieren oder sie einfach in die Zwischenablage kopieren und in das Abfragefenster einfügen (es funktioniert sogar mit mehreren Megabyte Daten).

9

Ich habe für eine lange Zeit, um diese gespeicherte Prozedur wurde unter Verwendung von: sp_generate_inserts: die 2000-Version und die 2005 (and up) Version.

Sie verwenden es wie folgt aus:

sp_generate_inserts 'thetablename' 

oder wenn Sie filtern möchten:

sp_generate_inserts 'thetablename', @from='from ... where ... order by ...' 

Die sp wird Einsätze Aussagen als Abfrageergebnisse zurück. Vergessen Sie nicht, die Einstellung zu ändern: Erhöhen Sie die maximale Anzahl von Zeichen, die in jeder Spalte angezeigt werden (Extras - Optionen - Abfrageergebnisse).

17

Aktualisierung seit diesem Q & A war an der Spitze der Suchergebnisse, wenn ich nach der Antwort suchte.

In MSSQL 2008 R2:

Recht auf Datenbank klicken: Aufgaben -> Skripts generieren ...

Das Generieren und Veröffentlichen Dialogskripts erscheint. Die Intro-Seite ist wertlos. Klicken Sie auf "Weiter"

Wählen Sie "Wählen Sie bestimmte Datenbankobjekte" und wählen Sie dann die Tabelle (n), für die Sie Inserts erhalten möchten. Klicken Sie auf Weiter und der Dialog wird zu den "Set Scripting Options" gehen.

Klicken Sie auf Erweitert, und Sie sollten sehen:

enter image description here

Blättern Sie in der Liste der Optionen, bis Sie „Datentypen Skript“ finden. Klicken Sie auf diese Zeile und wählen Sie "Nur Daten" aus dem Pulldown-Menü. OK klicken". Wählen Sie Ihre Speicheroptionen und klicken Sie ein paar Mal auf "Weiter".

Hinweis - Der Ausgang enthält nach jeweils 100 Einsätzen auch Folgendes.

GO 
    print 'Processed 200 total records' 
+1

Ich weiß nicht, das ist nicht die beste Antwort. Vielleicht, weil es nicht für SQL Server 2000 gilt. Aber genau das habe ich gesucht. –

+0

Arbeitete auch für mich - danke. –

+0

Ich habe zu SSMS 2012 gewechselt, und aus irgendeinem Grund enthält das Skript nicht mehr "xxx records verarbeiten". Wie bekomme ich es zurück? – ulu