diff --git a/GenerateInsert.sql b/GenerateInsert.sql index 6d353d6..d649cdd 100644 --- a/GenerateInsert.sql +++ b/GenerateInsert.sql @@ -27,6 +27,8 @@ CREATE PROCEDURE dbo.GenerateInsert , @GenerateStatementTerminator bit = 1 , @ShowWarnings bit = 1 , @Debug bit = 0 +, @ColumnExclusion nvarchar(max) = NULL +, @ColumnInclusion nvarchar(max) = NULL ) AS /******************************************************************************* @@ -126,6 +128,12 @@ Arguments: @Debug bit = 0 When 0 then no debug information are printed. When 1 then constructed SQL statements are printed for later examination + @ColumnExclusion nvarchar(max) = NULL + A comma seperated string of column names which should be excluded + Format: 'ID,DateAdded,DateCreated' + @ColumnInclusion nvarchar(max) = NULL + A comma seperated string of column names which should be included + Format: 'ID,DateAdded,DateCreated' *******************************************************************************/ BEGIN SET NOCOUNT ON; @@ -153,6 +161,22 @@ DECLARE @Results table (TableRow nvarchar(max)); DECLARE @TableRow nvarchar(max); DECLARE @RowNo int; +DECLARE @ColumnExclusionTable TABLE (ColumnName nvarchar(4000)) +INSERT INTO @ColumnExclusionTable (ColumnName) +SELECT LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)'))) AS ColumnName +FROM ( +SELECT CAST('' + REPLACE(@ColumnExclusion,',','') + '' AS XML) AS x +) ce +CROSS APPLY x.nodes('/XMLRoot/RowData')m(n) + +DECLARE @ColumnInclusionTABLE TABLE (COLUMNNAME nvarchar(4000)) +INSERT INTO @ColumnInclusionTABLE (COLUMNNAME) +SELECT LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)'))) AS COLUMNNAME +FROM ( +SELECT CAST('' + REPLACE(@ColumnInclusion,',','') + '' AS XML) AS x +) ce +CROSS APPLY x.nodes('/XMLRoot/RowData')m(n) + IF PARSENAME(@ObjectName,3) IS NOT NULL OR PARSENAME(@ObjectName,4) IS NOT NULL BEGIN @@ -208,6 +232,10 @@ WHERE o.type IN (N'U',N'V',N'IF',N'TF') OR @PopulateIdentityColumn = 1) AND (COLUMNPROPERTY(c.object_id,c.name,'IsComputed') != 1 OR @PopulateComputedColumn = 1) + AND (c.name NOT IN (SELECT COLUMNNAME FROM @ColumnExclusionTable) + OR @ColumnExclusion IS NULL OR LEN(@ColumnExclusion) = 0) + AND (c.name IN (SELECT COLUMNNAME FROM @ColumnInclusionTable) + OR @ColumnInclusion IS NULL OR LEN(@ColumnInclusion) = 0) ORDER BY COLUMNPROPERTY(c.object_id,c.name,'ordinal') -- ORDINAL_POSITION FOR READ ONLY ; diff --git a/README.md b/README.md index 482490c..1a307ff 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ Generates INSERT statement(s) for data in a table. ## Change Log ## +- Build 7. Added support for including or excluding columns. - Build 6. Added support for table-valued and inline user defined functions. - Build 5. Fixed an issue with strings longer than 4000 characters. - Build 4. New option to sort data returned by a query.