1Export data to INSERT statementsif exists (select * from sysobjects where id = 
  2Export data to INSERT statementsobject_id('spu_GenerateInsert')) 
  3Export data to INSERT statements drop procedure spu_GenerateInsert 
  4Export data to INSERT statementsGO 
  5Export data to INSERT statements
  6Export data to INSERT statements
  7Export data to INSERT statementsCREATE PROCEDURE spu_GenerateInsert 
  8Export data to INSERT statements @table varchar(128
  9Export data to INSERT statementsAS 
 10Export data to INSERT statements
 26Export data to INSERT statements
 27Export data to INSERT statements--declare some variables that will be used 
 28Export data to INSERT statementsDECLARE @InsertStmt varchar(8000), 
 29Export data to INSERT statements @Fields varchar(8000), 
 30Export data to INSERT statements @SelList varchar(8000), 
 31Export data to INSERT statements @Data varchar(8000), 
 32Export data to INSERT statements @ColName varchar(128), 
 33Export data to INSERT statements @IsChar tinyint
 34Export data to INSERT statements @FldCounter int
 35Export data to INSERT statements @TableData varchar(8000
 36Export data to INSERT statements
 37Export data to INSERT statements
 38Export data to INSERT statements--initialize some of the variables 
 39Export data to INSERT statementsSELECT @InsertStmt = 'INSERT INTO ' + @Table + ' ('
 40Export data to INSERT statements @Fields = ''
 41Export data to INSERT statements @Data = ''
 42Export data to INSERT statements @SelList = 'SELECT '
 43Export data to INSERT statements @FldCounter = 0 
 44Export data to INSERT statements
 45Export data to INSERT statements
 46Export data to INSERT statements--create a cursor that loops through the fields in the table 
 47Export data to INSERT statements--and retrieves the column names and determines the delimiter type that the 
 48Export data to INSERT statementsfield needs 
 49Export data to INSERT statementsDECLARE CR_Table CURSOR FAST_FORWARD FOR 
 50Export data to INSERT statements SELECT COLUMN_NAME, 
 51Export data to INSERT statements 'IsChar' = CASE 
 52Export data to INSERT statements  WHEN DATA_TYPE in ('int''money''decimal''tinyint''smallint'THEN 
 53Export data to INSERT statements0 
 54Export data to INSERT statements  WHEN DATA_TYPE in ('char''varchar' ) THEN 1 
 55Export data to INSERT statements  WHEN DATA_TYPE in ('datetime''smalldatetime'THEN 2 
 56Export data to INSERT statements  ELSE 9 END 
 57Export data to INSERT statements FROM INFORMATION_SCHEMA.COLUMNS 
 58Export data to INSERT statements WHERE table_name = @table 
 59Export data to INSERT statements  AND DATA_TYPE <> 'timestamp' 
 60Export data to INSERT statements ORDER BY ORDINAL_POSITION 
 61Export data to INSERT statementsFOR READ ONLY 
 62Export data to INSERT statementsOPEN CR_Table 
 63Export data to INSERT statementsFETCH NEXT FROM CR_Table INTO @ColName@IsChar 
 64Export data to INSERT statementsWHILE (@@fetch_status <> -1
 65Export data to INSERT statementsBEGIN 
 66Export data to INSERT statements IF (@@fetch_status <> -2
 67Export data to INSERT statements BEGIN 
 68Export data to INSERT statements  IF @FldCounter = 0 
 69Export data to INSERT statements  BEGIN 
 70Export data to INSERT statements   SELECT @Fields =  @Fields + @ColName + '' 
 71Export data to INSERT statements   SELECT @SelList =  CASE 
 72Export data to INSERT statements    WHEN @IsChar = 1 THEN @SelList + ' ''"'' + ISNULL( REPLACE('+  @ColName 
 73Export data to INSERT statements+ '''"''''""''),"") + ''",'' +' + ' ' 
 74Export data to INSERT statements    WHEN @IsChar = 2 THEN @SelList + ' ''"'' +  ISNULL(CONVERT(varchar(20),' 
 75Export data to INSERT statements+ @ColName + '),''12/30/1899'') + ''"'' +' + '  ' 
 76Export data to INSERT statements    ELSE @SelList + 'ISNULL(CONVERT(varchar(2000),'+@ColName + '),0)' +  '
 77Export data to INSERT statements'''' + ' END 
 78Export data to INSERT statements   SELECT @FldCounter = @FldCounter + 1 
 79Export data to INSERT statements   FETCH NEXT FROM CR_Table INTO @ColName@IsChar 
 80Export data to INSERT statements  END 
 81Export data to INSERT statements
 82Export data to INSERT statements
 83Export data to INSERT statements  SELECT @Fields =  @Fields + @ColName + '' 
 84Export data to INSERT statements  SELECT @SelList =  CASE 
 85Export data to INSERT statements   WHEN @IsChar = 1 THEN @SelList + ' '',"'' + ISNULL(REPLACE(' +  @ColName 
 86Export data to INSERT statements+ '''"'',''""''), "") + ''"'' +' + ' ' 
 87Export data to INSERT statements   WHEN @IsChar = 2 THEN @SelList + ' '',"'' +  ISNULL(CONVERT(varchar(20),' 
 88Export data to INSERT statements+ @ColName + '),''12/30/1899'') + ''"'' +' + '  ' 
 89Export data to INSERT statements   ELSE @SelList  + ' '','' +   ISNULL(CONVERT(varchar(2000),'+@ColName + 
 90Export data to INSERT statements'),0)' + '+' END 
 91Export data to INSERT statements END 
 92Export data to INSERT statements FETCH NEXT FROM CR_Table INTO @ColName@IsChar 
 93Export data to INSERT statementsEND 
 94Export data to INSERT statementsCLOSE CR_Table 
 95Export data to INSERT statementsDEALLOCATE CR_Table 
 96Export data to INSERT statements
 97Export data to INSERT statements
 98Export data to INSERT statementsSELECT @Fields =  SUBSTRING(@Fields1,(len(@Fields)-1)) 
 99Export data to INSERT statements--SELECT @Fields AS TheFields 
100Export data to INSERT statements
101Export data to INSERT statements
102Export data to INSERT statementsSELECT @SelList =  SUBSTRING(@SelList1,(len(@SelList)-1)) 
103Export data to INSERT statementsSELECT @SelList = @SelList + ' FROM ' + @table 
104Export data to INSERT statements--SELECT @SelList AS TheSelList 
105Export data to INSERT statements
106Export data to INSERT statements
107Export data to INSERT statementsSELECT @InsertStmt = @InsertStmt + @Fields + ')' 
108Export data to INSERT statements--SELECT @InsertStmt AS TheInsertStmt 
109Export data to INSERT statements
110Export data to INSERT statements
111Export data to INSERT statements--RETURN (0) 
112Export data to INSERT statements--go 
113Export data to INSERT statements
114Export data to INSERT statements
115Export data to INSERT statements--for debuggingExport data to INSERT statements 
116Export data to INSERT statements--exec (@SelList) 
117Export data to INSERT statements
118Export data to INSERT statements
119Export data to INSERT statements--now we need to create and load the temp table that will hold the data 
120Export data to INSERT statements--that we are going to generate into an insert statement 
121Export data to INSERT statements
122Export data to INSERT statements
123Export data to INSERT statementsCREATE TABLE #TheData (TableData varchar(8000)) 
124Export data to INSERT statementsINSERT INTO #TheData (TableData) EXEC (@SelList
125Export data to INSERT statements
126Export data to INSERT statements
127Export data to INSERT statements--Cursor through the data to generate the INSERT statement / VALUES clause 
128Export data to INSERT statementsDECLARE CR_Data CURSOR FAST_FORWARD FOR SELECT TableData FROM #TheData FOR 
129Export data to INSERT statementsREAD ONLY 
130Export data to INSERT statementsOPEN CR_Data 
131Export data to INSERT statementsFETCH NEXT FROM CR_Data INTO @TableData 
132Export data to INSERT statementsWHILE (@@fetch_status <> -1
133Export data to INSERT statementsBEGIN 
134Export data to INSERT statements IF (@@fetch_status <> -2
135Export data to INSERT statements BEGIN 
136Export data to INSERT statements  PRINT @InsertStmt 
137Export data to INSERT statements  PRINT ' VALUES (' +  @TableData + ')' + char(13+ 'GO' 
138Export data to INSERT statements END 
139Export data to INSERT statements FETCH NEXT FROM CR_Data INTO @TableData 
140Export data to INSERT statementsEND 
141Export data to INSERT statementsCLOSE CR_Data 
142Export data to INSERT statementsDEALLOCATE CR_Data 
143Export data to INSERT statements
144Export data to INSERT statements
145Export data to INSERT statementsRETURN (0
146Export data to INSERT statements
147Export data to INSERT statements
148Export data to INSERT statementsGO 
149Export data to INSERT statements
150Export data to INSERT statements

相关文章: