Exportieren von Daten in SQL Server als INSERT INTO


413

Ich verwende SQL Server 2008 Management Studio und habe eine Tabelle, die ich auf einen anderen Datenbankserver migrieren möchte.

Gibt es eine Option zum Exportieren der Daten als Einfügung in ein SQL-Skript?

Antworten:


682

Klicken Sie in SSMS im Objekt-Explorer mit der rechten Maustaste auf die Datenbank, klicken Sie mit der rechten Maustaste und wählen Sie "Aufgaben" und dann "Skripte generieren".

Auf diese Weise können Sie Skripts für eine einzelne oder alle Tabellen generieren. Eine der Optionen ist "Skriptdaten". Wenn Sie dies auf TRUE setzen, generiert der Assistent ein Skript mit der Anweisung INSERT INTO () für Ihre Daten.

Wenn Sie 2008 R2 oder 2012 verwenden, wird es als etwas anderes bezeichnet (siehe Abbildung unten)

Alt-Text

2008 R2 oder höher zB 2012

Wählen Sie "Arten von zu skriptenden Daten" aus. Dies kann "Nur Daten", "Schema und Daten" oder "Nur Schema" sein (Standardeinstellung).

Geben Sie hier die Bildbeschreibung ein

Und dann gibt es ein " SSMS Addin " -Paket auf Codeplex (einschließlich Quelle), das fast die gleiche Funktionalität und ein paar mehr verspricht (wie Schnellsuche usw.).

Alt-Text


Ich habe gerade das Add-In von Codeplex installiert. Nett. Danke für die Information.
Rob Garrison

1
SMSS Add In hat 2008 für mich funktioniert. Data Scripter Add In hat nicht funktioniert.
Phil Hale

5
In 2008 R2 befindet sich die Option "Zu skriptende Datentypen" auf dem Bildschirm "Skriptoptionen festlegen". Klicken Sie dort auf die Schaltfläche "Erweitert".
Raymi

3
Funktionieren diese Addins in 2008 R2? SSMS Addin löst beim Laden eine Ausnahme aus.
Jocull

2
Werfen Sie einen Blick auf @ Ruffin Antwort unten für weitere Screenshots
Keith Sirmons

117

Aus Gründen der überexpliziten Hirnlosigkeit , nachdem Sie die Anweisungen von marc_s bis hierher befolgt haben ...

Klicken Sie in SSMS im Objekt-Explorer mit der rechten Maustaste auf die Datenbank, klicken Sie mit der rechten Maustaste und wählen Sie "Aufgaben" und dann "Skripte generieren".

... Ich sehe dann einen Assistentenbildschirm mit " Einführung, Objekte auswählen, Skriptoptionen festlegen, Zusammenfassung und Skripte speichern oder veröffentlichen " mit den Schaltflächen "Zurück", "Weiter", " Fertig stellen " und "Abbrechen" unten.

Im Schritt " Skriptoptionen festlegen" müssen Sie auf "Erweitert" klicken , um die Seite mit den Optionen aufzurufen. Dann, wie Ghlouw erwähnt hat, wählen Sie jetzt "Datentypen zum Skripten" und profitieren.

erweiterte Taste HIGHLIGHTED IN ROT! 1 !!


13
Danke, diese Schaltfläche hat keine sehr intuitive Platzierung. Ich nahm an, dass es zu "In Datei speichern" gehört.
Karel Kral

48

Wenn Sie SQLServer 2008R2 verwenden, müssen Sie Datentypen auf Skriptfeld festlegen.

Geben Sie hier die Bildbeschreibung ein


2
Gilt auch für 2012.
OldCurmudgeon

1
Gilt auch für 2014.
NucS

2
Wenn Sie wie ich verwirrt sind, ist die Option "Arten von zu skriptenden Daten" nur in den "Erweiterten" Optionen des Assistenten "Skripte generieren ..." sichtbar - Sie finden sie nicht im Hauptoptionsdialog!
Etherman

36

Wenn Sie SQL Server 2008 R2 ausführen, haben sich die integrierten Optionen in SSMS als marc_s, wie oben beschrieben, etwas geändert. Anstatt Script data = truewie in seinem Diagramm gezeigt auszuwählen , gibt es jetzt eine neue Option, die "Types of data to script"direkt über der Gruppierung "Tabellen- / Ansichtsoptionen" aufgerufen wird . Hier können Sie nur Skriptdaten, Schema und Daten oder nur Schema auswählen. Klappt wunderbar.



6

Für diejenigen, die nach einer Befehlszeilenversion suchen, hat Microsoft Folgendes veröffentlichtmssql-scripter :

$ pip install mssql-scripter

# Generate DDL scripts for all database objects and DML scripts (INSERT statements)
# for all tables in the Adventureworks database and save the script files in
# the current directory
$ mssql-scripter -S localhost -d AdventureWorks -U sa --schema-and-data \
                 -f './' --file-per-object

Es scheint, dass mssql-scripter jetzt ein totes Projekt ist.
Alex Suzuki

Zwar hat im letzten Jahr keine Entwicklung stattgefunden, aber es funktioniert gut für mich.
Nickolay

3

Nur Screenshots aktualisieren, um anderen zu helfen, da ich eine neuere Version 18 verwende, circa 2019.

Klicken Sie mit der rechten Maustaste auf DB: Aufgaben> Skripte generieren

Hier können Sie bestimmte Tabellen auswählen oder die Standardeinstellung aller festlegen.

Hier können Sie bestimmte Tabellen auswählen oder die Standardeinstellung aller festlegen. Für meine eigenen Bedürfnisse gebe ich nur die eine Tabelle an.

Als nächstes gibt es die "Skriptoptionen", in denen Sie die Ausgabedatei usw. auswählen können. Wie in mehreren Antworten oben (ich entstaube nur alte Antworten für neuere, SQL Server Management Studio v18.4), was wir wirklich wollen befindet sich unter der Schaltfläche "Erweitert". Für meine eigenen Zwecke benötige ich nur die Daten.

Allgemeine Ausgabeoptionen, einschließlich Ausgabe in Datei. Erweiterte Optionen einschließlich Daten!

Schließlich gibt es vor der Ausführung eine Übersicht über die Überprüfung. Nach dem Ausführen wird ein Bericht über den Betriebsstatus angezeigt. Zusammenfassung.


2

Sie können das "Data Scripter Add-In" für SQL Server Management Studio 2008 auch unter folgender Adresse herunterladen:

http://www.mssql-vehicle-data.com/SSMS


Ihre Funktionsliste:

  • Es wurde auf SSMS 2008 entwickelt und wird in der Version 2005 derzeit nicht unterstützt (bald!)

  • Exportieren Sie Daten schnell nach T-SQL für MSSQL- und MySQL-Syntax

  • CSV, TXT, XML werden ebenfalls unterstützt! Nutzen Sie das volle Potenzial, die Leistung und die Geschwindigkeit, die SQL bietet.

  • Warten Sie nicht, bis Access oder Excel für Sie Skriptarbeiten ausgeführt haben, die einige Minuten dauern können. Lassen Sie SQL Server dies für Sie tun und nehmen Sie sich beim Exportieren Ihrer Daten alle Rätselraten!

  • Passen Sie Ihre Datenausgabe für schnelle Sicherungen, DDL-Manipulationen und mehr an ...

  • Ändern Sie Tabellennamen und Datenbankschemata schnell und effizient nach Ihren Wünschen

  • Exportieren Sie Spaltennamen oder generieren Sie einfach Daten ohne die Namen.

  • Sie können einzelne Spalten für das Skript auswählen.

  • Sie können Teilmengen von Daten auswählen (WHERE-Klausel).

  • Sie können die Reihenfolge der Daten auswählen (ORDER BY-Klausel).

  • Tolles Backup-Dienstprogramm für grungy Datenbank-Debugging-Vorgänge, die Datenmanipulation erfordern. Verlieren Sie beim Experimentieren keine Daten. Daten im laufenden Betrieb bearbeiten!


2

Alles oben ist schön, aber wenn Sie müssen

  1. Exportieren Sie Daten aus mehreren Ansichten und Tabellen mit Verknüpfungen
  2. Erstellen Sie Einfügeanweisungen für verschiedene RDBMS
  3. Migrieren Sie Daten von einem beliebigen RDBMS zu einem beliebigen RDBMS

dann ist der folgende Trick der einzige Weg.

Erfahren Sie zunächst, wie Sie Spooldateien erstellen oder Ergebnismengen vom Quell-DB-Befehlszeilenclient exportieren. Zweitens lernen Sie, wie Sie SQL-Anweisungen auf der Zieldatenbank ausführen.

Erstellen Sie abschließend die Einfügeanweisungen (und alle anderen Anweisungen) für die Zieldatenbank, indem Sie ein SQL-Skript in der Quellendatenbank ausführen. z.B

SELECT '-- SET the correct schema' FROM dual;
SELECT 'USE test;' FROM dual;
SELECT '-- DROP TABLE IF EXISTS' FROM dual;
SELECT 'IF OBJECT_ID(''table3'', ''U'') IS NOT NULL DROP TABLE dbo.table3;' FROM dual;
SELECT '-- create the table' FROM dual;
SELECT 'CREATE TABLE table3 (column1 VARCHAR(10), column2 VARCHAR(10));' FROM dual;

SELECT 'INSERT INTO table3 (column1, column2) VALUES (''', table1.column1, ''',''', table2.column2, ''');' FROM table1 JOIN table2 ON table2.COLUMN1 = table1.COLUMN1;

Das obige Beispiel wurde für die Oracle-Datenbank erstellt, in der die Verwendung von Dual für tabellenlose Auswahlen erforderlich ist.

Die Ergebnismenge enthält das Skript für die Zieldatenbank.


1

Hier ist ein Beispiel für das Erstellen eines Datenmigrationsskripts mit einem Cursor zum Iterieren der Quelltabelle.

SET NOCOUNT ON;  
DECLARE @out nvarchar(max) = ''
DECLARE @row nvarchar(1024)
DECLARE @first int = 1

DECLARE cur CURSOR FOR 
    SELECT '(' + CONVERT(CHAR(1),[Stage]) + ',''' + [Label] + ''')'
    FROM CV_ORDER_STATUS
    ORDER BY [Stage]

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS ON'
PRINT 'GO'

PRINT 'INSERT INTO dbo.CV_ORDER_STATUS ([Stage],[Label]) VALUES';

OPEN cur
FETCH NEXT FROM cur
    INTO @row

WHILE @@FETCH_STATUS = 0
BEGIN
    IF @first = 1
        SET @first = 0
    ELSE
        SET @out = @out + ',' + CHAR(13);

    SET @out = @out + @row

    FETCH NEXT FROM cur into @row
END

CLOSE cur
DEALLOCATE cur

PRINT @out

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS OFF'
PRINT 'GO'

0

Nach vielem Suchen war es mein bester Schuss:

Wenn Sie viele Daten haben und ein kompaktes und elegantes Skript benötigen, versuchen Sie es: SSMS Tools Pack

Es generiert eine Vereinigung aller select-Anweisungen, um Elemente in Zieltabellen einzufügen und Transaktionen ziemlich gut zu verarbeiten.

Bildschirmfoto

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.