503 Stimmen

Daten in SQL Server als INSERT INTO exportieren

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?

11voto

Nickolay Punkte 29488

Für diejenigen, die eine Befehlszeilenversion suchen, bietet Microsoft veröffentlicht mssql-scripter um dies zu tun:

$ 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

dbatools.io ist ein viel aktiveres Projekt auf der Grundlage von PowerShell, das die Get-DbaDbTable y Export-DbaDbTableData Cmdlets, um dies zu erreichen:

PS C:\> Get-DbaDbTable -SqlInstance sql2016 -Database MyDatabase \
           -Table 'dbo.Table1', 'dbo.Table2' | 
        Export-DbaDbTableData -Path C:\temp\export.sql

11voto

ingconti Punkte 9854

Für SQl Server Mng Studio 2016:

enter image description here

4voto

agelbess Punkte 4091

All das ist schön, aber wenn Sie Folgendes brauchen

  1. Exportieren von Daten aus mehreren Ansichten und Tabellen mit Joins
  2. Einfügeanweisungen für verschiedene RDBMS erstellen
  3. Migrieren Sie Daten von jedem RDBMS zu jedem RDBMS

dann ist der folgende Trick die einzige Möglichkeit.

Lernen Sie zunächst, wie Sie Spooldateien erstellen oder Ergebnismengen aus dem Quell-DB-Kommandozeilen-Client exportieren. Zweitens lernen Sie, wie Sie SQL-Anweisungen in der Zieldatenbank ausführen.

Schließlich erstellen Sie die Einfügeanweisungen (und alle anderen Anweisungen) für die Zieldatenbank, indem Sie ein SQL-Skript auf der Quelldatenbank 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-DB erstellt, wo die Verwendung von Dual für tabellenlose Selects erforderlich ist.

Die Ergebnismenge enthält das Skript für die Ziel-DB.

2voto

Nate Punkte 31

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

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


Ihre Merkmale sind aufgelistet:

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

  • Schnelles Exportieren von Daten nach T-SQL für MSSQL- und MySQL-Syntax

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

  • Warten Sie nicht darauf, dass Access oder Excel Skripte für Sie erstellt, die mehrere Minuten in Anspruch nehmen können - lassen Sie SQL Server diese Arbeit für Sie erledigen und nehmen Sie sich das Rätselraten beim Exportieren Ihrer Daten ab!

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

  • Ändern Sie Tabellennamen und Datenbankschemata schnell und effizient nach Ihren Bedürfnissen

  • Exportieren Sie Spaltennamen oder erzeugen 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 wählen (ORDER BY-Klausel).

  • Ein großartiges Sicherungsprogramm für die mühsamen Datenbank-Debugging-Operationen, die eine Datenmanipulation erfordern. Verlieren Sie beim Experimentieren keine Daten. Manipulieren Sie Daten im laufenden Betrieb!

1voto

Shane K Punkte 4455

Hier ist ein Beispiel für die Erstellung eines Datenmigrationsskripts, das einen Cursor verwendet, um die Quelltabelle zu iterieren.

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'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X