Incomplete Leo

Something from my heart

Generate INSERT statement – Tested on: SQL Server 7.0 and SQL Server 2000 and SQL Server 2005


Procedure: sp_generate_inserts (Build 22)
(Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.)

Purpose: To generate INSERT statements from existing data.
These INSERTS can be executed to regenerate the data at some other location.
This procedure is also useful to create a database setup, where in you can
script your data along with your table definitions.

Written by: Narayana Vyas Kondreddi

Divya Kalra — For beta testing
Mark Charsley — For reporting a problem with scripting uniqueidentifier columns with NULL values
Artur Zeygman — For helping me simplify a bit of code for handling non-dbo owned tables
Joris Laperre — For reporting a regression bug in handling text/ntext columns

Tested on: SQL Server 7.0 and SQL Server 2000 and SQL Server 2005

Date created: January 17th 2001 21:52 GMT

Date modified: May 1st 2002 19:50 GMT


NOTE: This procedure may not work with tables with too many columns.
Results can be unpredictable with huge text columns or SQL Server 2000’s sql_variant data types
Whenever possible, Use @include_column_list parameter to ommit column list in the INSERT statement, for better results
IMPORTANT: This procedure is not tested with internation data (Extended characters or Unicode). If needed
you might want to convert the datatypes of character variables in this procedure to their respective unicode counterparts
like nchar and nvarchar


Example 1: To generate INSERT statements for table ‘titles’:

EXEC sp_generate_inserts ‘titles’

Example 2: To ommit the column list in the INSERT statement: (Column list is included by default)
IMPORTANT: If you have too many columns, you are advised to ommit column list, as shown below,
to avoid erroneous results

EXEC sp_generate_inserts ‘titles’, @include_column_list = 0

Example 3: To generate INSERT statements for ‘titlesCopy’ table from ‘titles’ table:

EXEC sp_generate_inserts ‘titles’, ‘titlesCopy’

Example 4: To generate INSERT statements for ‘titles’ table for only those titles
which contain the word ‘Computer’ in them:
NOTE: Do not complicate the FROM or WHERE clause here. It’s assumed that you are good with T-SQL if you are using this parameter

EXEC sp_generate_inserts ‘titles’, @from = “from titles where title like ‘%Computer%'”

Example 5: To specify that you want to include TIMESTAMP column’s data as well in the INSERT statement:
(By default TIMESTAMP column’s data is not scripted)

EXEC sp_generate_inserts ‘titles’, @include_timestamp = 1

Example 6: To print the debug information:

EXEC sp_generate_inserts ‘titles’, @debug_mode = 1

Example 7: If you are not the owner of the table, use @owner parameter to specify the owner name
To use this option, you must have SELECT permissions on that table

EXEC sp_generate_inserts Nickstable, @owner = ‘Nick’

Example 8: To generate INSERT statements for the rest of the columns excluding images
When using this otion, DO NOT set @include_column_list parameter to 0.

EXEC sp_generate_inserts imgtable, @ommit_images = 1

Example 9: To generate INSERT statements excluding (ommiting) IDENTITY columns:
(By default IDENTITY columns are included in the INSERT statement)

EXEC sp_generate_inserts mytable, @ommit_identity = 1

Example 10: To generate INSERT statements for the TOP 10 rows in the table:

EXEC sp_generate_inserts mytable, @top = 10

Example 11: To generate INSERT statements with only those columns you want:

EXEC sp_generate_inserts titles, @cols_to_include = “‘title’,’title_id’,’au_id'”

Example 12: To generate INSERT statements by omitting certain columns:

EXEC sp_generate_inserts titles, @cols_to_exclude = “‘title’,’title_id’,’au_id'”

Example 13: To avoid checking the foreign key constraints while loading data with INSERT statements:

EXEC sp_generate_inserts titles, @disable_constraints = 1

Example 14: To exclude computed columns from the INSERT statement:
EXEC sp_generate_inserts MyTable, @ommit_computed_cols = 1

Tiếp tục đọc


Tháng Hai 12, 2007 Posted by | SQL | Bạn nghĩ gì về bài viết này?