itrain-home Kinderpatenschaften mit Plan Deutschland  
home
 Aktuelle Seite:  knowhow sql tsql misc geninsert.asp 
 



 

Generieren von INSERT-Anweisungen für eine Tabelle

Der SQL Server bietet eine ganze Reihe von Möglichkeiten, die Daten aus einer Tabelle zu exportieren und auf einem anderen Server wieder zu importieren.

Für Test oder Schulungszwecke wäre es jedoch oftmals schön ein Werkzeug zu haben, mit dem aus den Daten einer bestehenden Tabelle automatisch die entsprechenden INSERT-Anweisungen erzeugt werden, mit denen die Tabelle zu einem späteren Zeitpunkt per INSERT wieder gefüllt werden kann.

Die gespeicherte Prozedur sp_generateInsertStatementsForTable (die Sie gerne auch downloaden können), erfüllt genau diese Aufgabe. Als Parameter werden der Name der Tabelle und die maximale Zahl an Zeilen, die exportiert werden sollen angegeben.

Mit Hilfe eines bcp queryout-Aufrufs können die Scripte so recht einfach in Textdateien geschrieben werden.

Aufruf der Prozedur

Die Prozedur erwartet als Parameter den Namen der Tabelle, für die die INSERT-Anweisungen generiert werden sollen. Optional kann noch die maximal zu generierende Zahl von INSERT-Anweisungen angegeben werden. Wird dieser Parameter nicht angegeben, so werden bis zu 100 Anweisungen erzeugt.

Beispielaufruf:

USE northwind
EXEC sp_generateInsertStatements 'orders', 2

Ergebnis:

INSERT INTO [orders] ([OrderID], [CustomerID], [EmployeeID], [OrderDate], [RequiredDate], [ShippedDate], [ShipVia], [Freight], [ShipName], [ShipAddress], [ShipCity], [ShipRegion], [ShipPostalCode], [ShipCountry]) VALUES ( 10248, N'VINET', 5, '1996-07-28 00:00:00.000', '1996-08-01 00:00:00.000', '1996-07-16 00:00:00.000', 3, 32.3800, N'Vins et alcools Chevalier', N'59 rue de l''Abbaye', N'Reims', NULL, N'51100', N'France')
INSERT INTO [orders] ([OrderID], [CustomerID], [EmployeeID], [OrderDate], [RequiredDate], [ShippedDate], [ShipVia], [Freight], [ShipName], [ShipAddress], [ShipCity], [ShipRegion], [ShipPostalCode], [ShipCountry]) VALUES ( 10249, N'TOMSP', 6, '1996-07-29 00:00:00.000', '1996-08-16 00:00:00.000', '1996-07-10 00:00:00.000', 1, 11.6100, N'Toms Spezialitäten', N'Luisenstr. 48', N'Münster', NULL, N'44087', N'Germany')

Einschränkungen

Soll das Script später ausgeführt werden, so sollten jedoch einige Einschränkungen beachtet werden

Nicht unterstützte Feldtypen

In der aktuellen Version werden die Werte aus Spalten vom Typ 'text', 'ntext', 'image', 'timestamp', 'sql_variant' nicht exportiert. Stattdessen wird einfach der Wert NULL eingefügt.

Tabellen mit Identitätsspalte (IDENTITY)

Soll der INSERT in Tabellen mit einer Identitätssplate ausgeführt werden, so muss das Einfügen von Identitätswerten für die Tabelle zunächst aktiviert werden.

Verwenden Sie dazu die Anweisung
SET IDENTITY_INSERT tabelle ON.
Nach dem Einfügen der Daten sollte die Option wieder abgeschaltet werden:
SET IDENTITY_INSERT tabelle OFF.

Fremdschlüsselbeziehungen

Beim Einfügen von Daten werden natürlich die Fremdschlüsselbeziehungen geprüft. Achten Sie daher beim Ausführen der Scripts auf die richtige Reihenfolge oder Erstellen Sie zusätzlich ein Script, dass die Einschränkungen zunächst deaktiviert und anschließend wieder aktiviert.

Denken Sie außerdem daran, dass eventuell vorhandene INSERT-Trigger ausgeführt werden.


svenh, september 2002

Leerraum

Dokument zum Drucken anzeigen
English Pages
Link-Tipp zum Thema "ASP.net": www.4guysfromrolla.com/

Umfangreiche Site rund um ASP.net. Guter Startpunkt für dieses Thema