Created
April 17, 2012 13:05
-
-
Save Nisden/2405840 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- vars | |
DECLARE @tableName NVARCHAR(255), @columnName NVARCHAR(255), @prevTable NVARCHAR(255), @prevColumn NVARCHAR(255), @sql NVARCHAR(255) | |
-- Start | |
DECLARE tablesCurser CURSOR FAST_FORWARD READ_ONLY FOR | |
SELECT name FROM sys.tables WHERE is_ms_shipped = 0 | |
OPEN tablesCurser | |
FETCH NEXT FROM tablesCurser INTO @tableName | |
WHILE @@FETCH_STATUS = 0 | |
BEGIN | |
-- Table Curser logic | |
PRINT @tableName | |
-- Column Cursor | |
DECLARE columnCursor CURSOR FAST_FORWARD READ_ONLY FOR | |
SELECT sys.columns.name FROM sys.columns | |
INNER JOIN sys.tables ON sys.columns.object_id = sys.tables.object_id | |
WHERE system_type_id IN (167, 231) AND sys.tables.name = @tableName | |
OPEN columnCursor | |
FETCH NEXT FROM columnCursor INTO @columnName | |
WHILE @@FETCH_STATUS = 0 | |
BEGIN | |
-- Column Cursor logic | |
-- PRINT '--' + @columnName | |
IF (@prevColumn IS NOT NULL AND @tableName IS NOT NULL) | |
BEGIN | |
-- Move data from current into prev table | |
SELECT @sql = 'INSERT INTO [' + @prevTable + '] ([' + @prevColumn + ']) SELECT ISNULL([' + @columnName + '], '''') FROM [' + @tableName + ']' | |
EXEC (@sql) | |
END | |
-- Set prev vars | |
SET @prevColumn = @columnName | |
SET @prevTable = @tableName | |
FETCH NEXT FROM columnCursor INTO @columnName | |
END | |
CLOSE columnCursor | |
DEALLOCATE columnCursor | |
-- End Column Cursor | |
-- Next | |
FETCH NEXT FROM tablesCurser INTO @tableName | |
END | |
-- Dispose | |
CLOSE tablesCurser | |
DEALLOCATE tablesCurser |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment