【IT愛好者】SQL Server自動生成INSERT語句(在SQL2005下測試通過)
這是建立一個儲存過程,通過執行這個儲存過程,將指定的資料表中的資料導成Insert語句形式
--這是一個可以將表中的資料自動生成INSERT語句的儲存過程
--有個BUG,如果是自動增長列,資料也會被插入
--在查詢分析器中執行完成後,可以從執行結果中自制出SQL指令碼。
IF OBJECT_ID('spGenInsertSQL','P') IS NOT NULL
DROP PROC spGenInsertSQL
GO
CREATE proc spGenInsertSQL (@tablename varchar(256))
as
begin
declare @sql varchar(8000)
declare @sqlValues varchar(8000)
set @sql =' ('
set @sqlValues = 'values (''+'
select @sqlValues = @sqlValues + cols + ' + '','' + ' ,@sql = @sql + '[' + name + '],'
from
(select case
when xtype in (48,52,56,59,60,62,104,106,108,122,127)
then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end'
when xtype in (58,61)
then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end'
when xtype in (167)
then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
when xtype in (231)
then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
when xtype in (175)
then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar) + '))+'''''''''+' end'
when xtype in (239)
then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar) + '))+'''''''''+' end'
else '''NULL'''
end as Cols,name
from syscolumns
where id = object_id(@tablename)
) T
set @sql ='select ''INSERT INTO ['+ @tablename + ']' + left(@sql,len(@sql)-1)+') ' + left(@sqlValues,len(@sqlValues)-4) + ')'' from '+@tablename
print @sql
exec (@sql)
end
GO
執行如下語句測試結果:
exec spGenInsertSQL test
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-407066/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 通過SQL PROFILE自動優化SQL語句SQL優化
- Sql Server系列:Insert語句SQLServer
- 根據DELTA自動生成SQL語句SQL
- MySQL在ROW模式下通過binlog提取SQL語句MySql模式
- SQL Server語句的自動優化工具SQLServer優化
- SQLTest系列之INSERT語句測試SQL
- 【SQL】9 SQL INSERT INTO 語句SQL
- Sql Server生成測試資料SQLServer
- 生成某一使用者下所有表資料的insert語句
- 通過sql語句分析足彩SQL
- C# SQL語句自動生成 給出NUnit Test方案C#SQL
- 測者的測試技術手冊:自動的自動化EvoSuite 自動生成JUnit的測試用例UI
- 通過分析SQL語句的執行計劃優化SQL語句SQL優化
- oracle 通過sql profile為sql語句加hintOracleSQL
- mysql資料庫語句自動生成MySql資料庫
- 在SQL Server上測試事務日誌的自動增長(三)QOSQLServer
- 在SQL Server上測試事務日誌的自動增長(二)TGSQLServer
- 在SQL Server上測試事務日誌的自動增長(一)JPSQLServer
- 關於加快INSERT語句執行速度的測試
- SQL Server映象自動生成指令碼方法SQLServer指令碼
- ORACLE 通過SPM為SQL語句加HINTOracleSQL
- 通過java來格式化sql語句JavaSQL
- 通過使用hint unnest調優sql語句SQL
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- SQL SERVER 中構建執行動態SQL語句SQLServer
- Sql Server系列:Update語句SQLServer
- Sql Server系列:Delete語句SQLServerdelete
- SQL server 查詢語句SQLServer
- sql server中常用語句SQLServer
- DBA常用SQL語句[sql server] 2SQLServer
- 測試資料之自動生成
- DBeaver如何生成select,update,delete,insert語句delete
- 動態sql語句來刪除使用者下的物件SQL物件
- 通過實體類生成 mysql 的建表語句MySql
- 通過ORA錯誤反思sql語句規範SQL
- 通過sql語句分析足彩(第三篇)SQL
- 儲存過程 與 SQL Server語句大比拼儲存過程SQLServer
- iOS OC SwiftMonkey 自動化測試 通過Pods整合iOSSwift