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?
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?
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
All das ist schön, aber wenn Sie Folgendes brauchen
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.
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!
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 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.