it-swarm.com.de

Exportieren von Daten in SQL Server als INSERT INTO

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

Gibt es eine Möglichkeit, die Daten als Einfügung in ein SQL-Skript zu exportieren?

389
Jack Kada

Klicken Sie in SSMS im Objekt-Explorer mit der rechten Maustaste auf die Datenbank, wählen Sie mit der rechten Maustaste "Tasks" und dann "Generate Scripts".

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, heißt es etwas anderes, siehe Abbildung unten

alt text

2008 R2 oder später zB 2012

Wählen Sie "Zu skriptende Datentypen" aus. Dies kann "Nur Daten", "Schema und Daten" oder "Nur Schema" sein (Standardeinstellung).

enter image description here

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

alt text

651
marc_s

Um der überaus expliziten Hirnlosigkeit willen folgen Sie marc_s 'Anweisungen bis hierher ...

Klicken Sie in SSMS im Objekt-Explorer mit der rechten Maustaste auf die Datenbank und wählen Sie "Tasks" und dann "Generate Scripts".

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

Im Schritt Set Scripting Options müssen Sie auf "Advanced" klicken, um die Seite mit den Optionen zu erhalten. Dann, wie Ghlouw erwähnt hat, wählen Sie jetzt "Zu schreibende Datentypen" und profitieren.

advanced button HIGHLIGHTED IN RED!1!!

110
ruffin

Wenn Sie SQLServer 2008R2 verwenden, müssen Sie die Datentypen für das Skriptfeld festlegen.

enter image description here

46
Azadeh Khojandi

Wenn Sie SQL Server 2008 R2 ausführen, haben sich die integrierten Optionen in SSMS, wie oben beschrieben, ein wenig geändert. Anstatt Script data = true wie in seinem Diagramm gezeigt auszuwählen, gibt es jetzt eine neue Option mit dem Namen "Types of data to script" direkt über der Gruppierung "Table/View Options". Hier können Sie auswählen, nur Daten, Schema und Daten oder nur Schema zu skripten. Klappt wunderbar.

36
Ghlouw

Für diejenigen, die nach einer Befehlszeilenversion suchen, bietet Microsoft veröffentlicht mssql-scripter Folgendes an:

$ 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
5
Nickolay

für SQL Server Mng Studio 2016:

enter image description here

4
ingconti

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

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


Ihre Features-Liste:

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

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

  • CSV, TXT, XML werden ebenfalls unterstützt! Nutzen Sie das volle Potenzial, die Kraft und die Geschwindigkeit, die SQL zu bieten hat.

  • Warten Sie nicht, bis Access oder Excel Skripts für Sie erstellt haben, was einige Minuten in Anspruch nehmen kann. Lassen Sie SQL Server dies für Sie tun, und nehmen Sie sich die Zeit, um Ihre Daten zu exportieren!

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

  • Passen Sie Tabellennamen und Datenbankschemata schnell und effizient Ihren Anforderungen an

  • 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 untergeordnete Datensätze auswählen (WHERE-Klausel).

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

  • Hervorragendes Backup-Dienstprogramm für die problematischen Datenbank-Debugging-Vorgänge, die eine Datenmanipulation erfordern. Verlieren Sie beim Experimentieren keine Daten. Manipulieren Sie Daten im Handumdrehen!

2
Nate

Das alles 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 aus dem Quell-DB-Befehlszeilenclient exportieren. Zweitens erfahren Sie, wie Sie SQL-Anweisungen auf der Ziel-DB ausführen.

Erstellen Sie abschließend die Einfügeanweisungen (und alle anderen Anweisungen) für die Zieldatenbank, indem Sie ein SQL-Skript für die 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 Ziel-Datenbank.

2
Αλέκος

In diesem Beispiel wird ein Datenmigrationsskript mit einem Cursor zum Durchlaufen der Quelltabelle erstellt.

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'
1
Shane

Nachdem ich viel gesucht hatte, war es mein bester Schuss:

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

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

Screenshot

0