/ Published in: SQL
URL: http://www.nigelrivett.net/SQLTsql/sp_CreateDataLoadScript.html
Expand |
Embed | Plain Text
declare @TblName varchar(128) SET @TblName = 'Categories' CREATE TABLE #a (id int identity (1,1), ColType int, ColName varchar(128)) INSERT #a (ColType, ColName) SELECT case when DATA_TYPE LIKE '%char%' then 1 else 0 end , COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME = @TblName ORDER BY ORDINAL_POSITION IF NOT EXISTS (SELECT * FROM #a) begin raiserror('No columns found for table %s', 16,-1, @TblName) RETURN end declare @id int , @maxid int , @cmd1 varchar(7000) , @cmd2 varchar(7000) SELECT @id = 0 , @maxid = max(id) FROM #a SELECT @cmd1 = 'select '' insert ' + @TblName + ' ( ' SELECT @cmd2 = ' + '' select '' + ' while @id < @maxid begin SELECT @id = min(id) FROM #a where id > @id SELECT @cmd1 = @cmd1 + ColName + ',' FROM #a WHERE id = @id SELECT @cmd2 = @cmd2 + ' case when ' + ColName + ' is null ' + ' then ''null'' ' + ' else ' + case when ColType = 1 then ''''''''' + ' + ColName + ' + ''''''''' else 'convert(varchar(20),' + ColName + ')' end + ' end + '','' + ' FROM #a WHERE id = @id end SELECT @cmd1 = LEFT(@cmd1,len(@cmd1)-1) + ' ) '' ' SELECT @cmd2 = LEFT(@cmd2,len(@cmd2)-8) + ' from ' + @tblName SELECT '/*' + @cmd1 + @cmd2 + '*/' exec (@cmd1 + @cmd2) DROP TABLE #a
You need to login to post a comment.
