Antworten:
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)
Wählen Sie "Arten von zu skriptenden Daten" aus. Dies kann "Nur Daten", "Schema und Daten" oder "Nur Schema" sein (Standardeinstellung).
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.).
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.
Wenn Sie SQLServer 2008R2 verwenden, müssen Sie Datentypen auf Skriptfeld festlegen.
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 = true
wie 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.
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
Nur Screenshots aktualisieren, um anderen zu helfen, da ich eine neuere Version 18 verwende, circa 2019.
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.
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.
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!
Alles oben ist schön, aber wenn Sie müssen
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.
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'
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.