Generate SQL data INSERT statements from a table

If you've ever had to work with reference data across multiple instances of the same application, or have simply needed to script data contained in a table, then you'll know what I'm talking about here. I've needed to do this a few times recently, and finally managed to come across something which does exactly what I needed. Here's the blurb from the description, which sums it up better than I have here:

This procedure generates INSERT statements using existing data from the given tables and views. Later, you can use these INSERT statements to generate the data. It's very useful when you have to ship or package a database application. This procedure also comes in handy when you have to send sample data to your vendor or technical support provider for troubleshooting purposes.

You simply run this code to place the stored procedure in your master database, and then run it from your query tool of choice supplying a table name as a paramater. The output is a SQL script which can be run to re-create the data elsewhere.

There were a couple of thing I'd tried before finding this solution. First, I'd checked out the SQL Red Gate Bundle. This tool is mostly used to keep database schemas in sync. Point it to 2 databases, and it will generate a script to make sure they match in terms of schema. Obviously they're meant to be of a similar schema in the first place. They also have a data compare tool, which will offer to sync data. It was along the right lines, but it didn't quite do what I needed. It's also a commercial product, so it's not something I'd want to build up much of a dependancy on just for this one function.

The other method I tried was generating a series of INSERT statements via SELECT statements. It's a much more manual method, requiring that you create and execute a query similar to this for each table:
select 'insert into tblPerson (FirstName) VALUES(''' + LTRIM(FirstName) + ''')' from tblPerson
This will perform a select on tblPerson, and generate a simple insert statement for each row in the table (set your results to text first). This is fine for a simple example, but it gets complex very quickly depending on how many columns you wish to preserve, the data typing of the columns, handling null values, as well as the fact that you'll need to cope with any escape characters that may be contained within your data. I've used more complex variants of the code above for other uses (such as taking a simple subset of data from a table, manipulating it slightly, and inserting it into another destination table), but the time it took to craft and check the code made it quite time consuming.

Chances are you've never needed something like this before. Maybe you never will either, but if you have, then check out this script. There's a lot of other code on the site too, the author (Narayana Vyas Kondreddi) looks like he's pretty skilled with SQL indeed. He's certainly saved me some time today, and is probably going to save me a lot more in the future.

Link: Procedure to script your data / Generate Inserts from existing data
Link: Direct link to the stored procedure code (2000 version)
Link: Direct link to the stored procedure code (2005 version)

Tags:

 Print | Posted on Monday, February 12, 2007 10:28 PM | Filed Under [ Web Development SQL ]



Feedback

Gravatar

# Generate SQL data INSERT statements from a table

19 19 19 19 19 19 19 07

http://www.test.be

3/1/2007 11:42 PM | qsdfqsd


Post Comment

Title  
Name  
Email
Website / Url
 

Your comment

   
Ensure the word in this box says 'orange':
 
Please add 1 and 2 and type the answer here:





Due to excessive comment spam, all comments are now being moderated. If you're a comment spammer then you're wasting your time here. Your comments will not be published - ever.


About me

My name is Ross Hawkins and I'm a developer, consultant, business owner and writer based in Auckland, New Zealand (pictured below!). My current work revolves around ASP.NET, C#, jQuery, Ajax, SQL Server, and a mix of other Microsoft development technologies.

I also have about 15 years of experience with IBM Lotus Notes/Domino and associated technologies. While Notes/Domino is no longer my primary focus I still like to dabble and keep my skills up to date.

I own and run 2 businesses - Hawkins Consulting Services, and Ignition Development.

Bethells Beach, located in sunny West Auckland, New Zealand




Subscribe

Subscribe to this feed


Search




Popular Content

Troubleshooting WebResource.axd

The .NET 2.0 framework changed the way clientside JavaScript is delivered to the browser. Previously, ASP.NET 1.1 used the aspnet_client directory whereas now 2.0 uses WebResource.axd.

Published on October 8, 2006

jQuery Wildcard Selectors - some simple examples

I wrote about jQuery wildcard selector syntax briefly back in 2009, and since then that post has received a lot of views – way more than a post that brief should ever have seen..

Published on October 14, 2011

Microsoft AJAX Extensions: Sys.Debug is null or not an object

One of the breaking changes which was made with the 1.0 release of the Microsoft Ajax Extensions was the renaming of the 'Debug' class to 'Sys.Debug' for reasons of compatiability with other frameworks. Breaking changes like this can often be a source of frustration..

Published on May 22, 2007

Simple ASP.NET Character Counter

A textbox character counter is a pretty simple piece of functionality, and there's a lot of different ways to apply one to your application. The following method is nice and simple, and can be done using only clientside JavaScript if required, or combined with server side code in order to create a more dynamic effect

Published on December 4, 2006

Simple ASP.NET Character Counter - with Master Page Support

A quick update to my previous character counter article adding some changes for those using it with Master Pages.

Published on February 7th, 2009

Adding Tooltips to Gridview Headers

As the title says, this is a very simple but dynamic way of achieving tooltip text on a header column. It's not overly flash, but it's lightweight and quick to implement.

Published on April 15, 2007

SQL Server Web Report Viewer Issues on Windows 2008 Server/IIS7

A fix for another AXD related issue, this time with the SQL Server Web Report Viewer Control which was being served up via IIS7 on a Windows 2008 server.

Published on June 2, 2007
Updated on April 10, 2008





Archives

May, 2012 (1)
April, 2012 (4)
March, 2012 (2)
February, 2012 (4)
January, 2012 (3)
December, 2011 (3)
November, 2011 (8)
October, 2011 (9)
September, 2011 (8)
August, 2011 (5)
July, 2011 (4)
June, 2011 (7)
May, 2011 (5)
April, 2011 (3)
March, 2011 (8)
February, 2011 (4)
January, 2011 (3)
December, 2010 (8)
November, 2010 (5)
October, 2010 (6)
September, 2010 (7)
August, 2010 (11)
July, 2010 (12)
June, 2010 (8)
May, 2010 (8)
April, 2010 (4)
March, 2010 (8)
February, 2010 (6)
January, 2010 (12)
December, 2009 (13)
November, 2009 (11)
October, 2009 (12)
September, 2009 (12)
August, 2009 (2)
July, 2009 (7)
June, 2009 (12)
May, 2009 (9)
April, 2009 (9)
March, 2009 (9)
February, 2009 (8)
January, 2009 (7)
December, 2008 (6)
November, 2008 (7)
October, 2008 (9)
September, 2008 (12)
August, 2008 (9)
July, 2008 (6)
June, 2008 (24)
May, 2008 (13)
April, 2008 (16)
March, 2008 (8)
February, 2008 (10)
January, 2008 (1)
December, 2007 (14)
November, 2007 (11)
October, 2007 (11)
September, 2007 (13)
August, 2007 (11)
July, 2007 (5)
June, 2007 (15)
May, 2007 (11)
April, 2007 (9)
March, 2007 (9)
February, 2007 (10)
January, 2007 (8)
December, 2006 (18)
November, 2006 (11)
October, 2006 (14)
September, 2006 (9)
August, 2006 (10)
July, 2006 (4)
June, 2006 (4)
May, 2006 (6)
April, 2006 (3)
February, 2006 (6)
January, 2006 (10)
September, 2005 (2)
August, 2005 (4)

Post Categories

ASP.NET
AJAX
Amusing
NZ
NZ Trains
Notes/Domino
Visual Studio
Web Development
Miscellaneous
Me
Rugby
C#
SQL