Labels

admin (1) aix (1) alert (1) always-on (2) Architecture (1) aws (3) Azure (1) backup (3) BI-DWH (10) Binary (3) Boolean (1) C# (1) cache (1) casting (3) cdc (1) certificate (1) checks (1) cloud (3) cluster (1) cmd (7) collation (1) columns (1) compilation (1) configurations (7) Connection-String (2) connections (6) constraint (6) copypaste (2) cpu (2) csv (3) CTE (1) data-types (1) datetime (23) db (547) DB2 (1) deadlock (2) Denali (7) device (6) dotNet (5) dynamicSQL (11) email (5) encoding (1) encryption (4) errors (124) excel (1) ExecutionPlan (10) extended events (1) files (7) FIPS (1) foreign key (1) fragmentation (1) functions (1) GCP (2) gMSA (2) google (2) HADR (1) hashing (3) in-memory (1) index (3) indexedViews (2) insert (3) install (10) IO (1) isql (6) javascript (1) jobs (11) join (2) LDAP (2) LinkedServers (8) Linux (15) log (6) login (1) maintenance (3) mariadb (1) memory (4) merge (3) monitoring (4) MSA (2) mssql (444) mssql2005 (5) mssql2008R2 (20) mssql2012 (2) mysql (36) MySQL Shell (5) network (1) NoSQL (1) null (2) numeric (9) object-oriented (1) offline (1) openssl (1) Operating System (4) oracle (7) ORDBMS (1) ordering (2) Outer Apply (1) Outlook (1) page (1) parameters (2) partition (1) password (1) Performance (103) permissions (10) pivot (3) PLE (1) port (4) PostgreSQL (14) profiler (1) RDS (3) read (1) Replication (12) restore (4) root (1) RPO (1) RTO (1) SAP ASE (48) SAP RS (20) SCC (4) scema (1) script (8) security (10) segment (1) server (1) service broker (2) services (4) settings (75) SQL (74) SSAS (1) SSIS (19) SSL (8) SSMS (4) SSRS (6) storage (1) String (35) sybase (57) telnet (2) tempdb (1) Theory (2) tips (120) tools (3) training (1) transaction (6) trigger (2) Tuple (2) TVP (1) unix (8) users (3) vb.net (4) versioning (1) windows (14) xml (10) XSD (1) zip (1)

Generating INSERT statements for a table

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

-- run as script:
declare
@tableName varchar(100),
@schemaName varchar(100) = 'dbo',
 @extraWhere varchar(500)
select @tableName = 'TestTypes'
-- select @extraWhere = ' ID > 12 '

-- run as stored procedure:
/*
CREATE PROCEDURE InsertStatementsGeneratorForTable
@tableName varchar(100),
@schemaName varchar(100) = 'dbo'
as
*/


DECLARE @string nvarchar(max)  --for storing the first half of INSERT statement
DECLARE @stringData nvarchar(max) --for storing the data (VALUES) related statement
DECLARE @dataType nvarchar(max) --data types returned for respective columns
SET @string= N'INSERT INTO ' + @schemaName + '.' + @tableName+ N'('

SET @stringData = ''

DECLARE @colName nvarchar(50)

--Open a cursor to retrieve column specific information for the specified table
DECLARE cursCol CURSOR FAST_FORWARD FOR 
-------------- Start Select --------------------------
SELECT column_name,data_type FROM information_schema.columns 
WHERE table_name = @tableName
AND  TABLE_SCHEMA = @schemaName
-------------- End Select ----------------------------
OPEN cursCol
FETCH NEXT FROM cursCol INTO @colName,@dataType

IF @@fetch_status<>0
 begin
 print N'Table ' + @schemaName + '.' + @tableName+ N' not found, processing skipped.'

 close curscol
 deallocate curscol
 return
END

WHILE @@FETCH_STATUS=0
BEGIN
 IF @dataType in ('varchar','char','nchar','nvarchar')
 BEGIN
  SET @stringData=@stringData+''''+'''+isnull('''''+'''''+REPLACE('+@colName + ', '''''''', '''''''''''')'+'+'''''+''''',''NULL'')+'',''+'
 END
 ELSE
 IF @dataType in ('text','ntext') --if the datatype is text or something else 
 BEGIN
  SET @stringData=@stringData+'''''''''+isnull(cast('+@colName+' as varchar(2000)),'''')+'''''',''+'
 END
 ELSE
 IF @dataType = 'money' --because money doesn't get converted from varchar implicitly
 BEGIN
  SET @stringData=@stringData+'''convert(money,''''''+isnull(cast('+@colName+' as varchar(200)),''0.0000'')+''''''),''+'
 END
 ELSE 
 IF @dataType='datetime'
 BEGIN
  SET @stringData=@stringData+'''convert(datetime,'+'''+isnull('''''+'''''+convert(varchar(200),'+@colName+',121)+'''''+''''',''NULL'')+'',121),''+'
 END
 ELSE 
 IF @dataType='image' 
 BEGIN
  SET @stringData=@stringData+'''''''''+isnull(cast(convert(varbinary,'+@colName+') as varchar(6)),''0'')+'''''',''+'
 END
 ELSE --presuming the data type is int,bit,numeric,decimal 
 BEGIN
  SET @stringData=@stringData+''''+'''+isnull('''''+'''''+convert(varchar(200),'+@colName+')+'''''+''''',''NULL'')+'',''+'
 END

 SET @string=@string+@colName+','

 FETCH NEXT FROM cursCol INTO @colName,@dataType
END

DECLARE @Query nvarchar(max)

SET @query = 'SELECT ''' + 
    substring(@string,0,len(@string)) + 
    ') VALUES(''+ ' + 
    substring(@stringData,0,len(@stringData)-2) +
    '''+'')'' FROM ' + 
    @schemaName + '.' + 
    @tableName
IF @extraWhere IS NOT NULL

                SET @query = @query + N' WHERE ' + @extraWhere

exec sp_executesql @query
--select @query

print @stringData
print @string
print @query

CLOSE cursCol
DEALLOCATE cursCol

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

The source code was taken from the link below, and edited by me.
http://www.codeproject.com/KB/database/InsertGeneratorPack.aspx

Another option - script via SSMS:
Right click on the DB name--> Tasks --> Generate Scripts --> in the advanced settings:
Displaying image001.png

No comments:

Post a Comment