SQL Server存儲過程生成insert語句實(shí)例
你肯定有過這樣的煩惱,同樣的表,不同的數(shù)據(jù)庫,加入你不能執(zhí)行select insert
那么你肯定需要一條這樣的存儲過程,之需要傳入表明,就會給你生成數(shù)據(jù)的插入語句。
當(dāng)然數(shù)據(jù)表數(shù)量太大,你將最好用別的方式
Create proc [dbo].[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 '''''''''+convert(char(23),'+name+',121)+''''''''' --datetime
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
SQL語句
最后的結(jié)果:
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('0002CA83-AF2F-4D8F-A345-33CA1CC7CF3C','任務(wù)調(diào)度系統(tǒng)',18,'2013-01-02 21:42:30.013','',NULL,'2013-01-02 21:42:30.013')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('0004A6F3-EC28-4D1F-BA40-0FC4B2218C92','任務(wù)調(diào)度系統(tǒng)',18,'2013-07-09 19:36:00.060','',NULL,'2013-07-09 19:36:00.060')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('00094D35-7B51-4EA3-871E-CE17E293B157','任務(wù)調(diào)度系統(tǒng)',18,'2013-05-16 15:21:20.070','',NULL,'2013-05-16 15:21:20.070')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('000BFBB0-B37D-4D6E-9FA2-3069D4F18F84','任務(wù)調(diào)度系統(tǒng)',18,'2013-04-11 11:41:50.030','',NULL,'2013-04-11 11:41:50.030')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('000C2CBC-E358-4469-BC2C-04F4DDCD72CD','任務(wù)調(diào)度系統(tǒng)',18,'2013-05-06 16:07:00.037','',NULL,'2013-05-06 16:07:00.037')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('000CB795-40EC-4783-B7A4-8D298DF63B70','任務(wù)調(diào)度系統(tǒng)',18,'2013-01-23 20:52:30.030','',NULL,'2013-01-23 20:52:30.030')
相關(guān)文章
SQL?Server主鍵與外鍵設(shè)置以及相關(guān)理解
在數(shù)據(jù)庫的學(xué)習(xí)中對于一個(gè)表的主鍵和外鍵的認(rèn)識是非常重要的,下面這篇文章主要給大家介紹了關(guān)于SQL?Server主鍵與外鍵設(shè)置以及相關(guān)理解的相關(guān)資料,需要的朋友可以參考下2022-10-10MSSQL數(shù)據(jù)庫獲取TEXT字段的內(nèi)容長度
SQL Server數(shù)據(jù)庫如何獲取TEXT字段的內(nèi)容長度呢?本文我們就來介紹一下2013-03-03將MSSQL Server 導(dǎo)入/導(dǎo)出到遠(yuǎn)程服務(wù)器教程的圖文方法分享
如何將MSSQL Server 導(dǎo)入/導(dǎo)出到遠(yuǎn)程服務(wù)器教程,需要mssql數(shù)據(jù)庫備份的朋友用得到。2011-08-08MSSQL數(shù)據(jù)庫排序規(guī)則如何更改
更改 SQL Server 2005 實(shí)例的默認(rèn)排序規(guī)則的操作可能會比較復(fù)雜,本文將提供詳細(xì)的操作步驟,需要了解的朋友可以參考下2012-11-11SQL Server Page結(jié)構(gòu)深入分析
這篇文章主要介紹了SQL Server Page結(jié)構(gòu)的詳細(xì)分析,從概念,原理等方便做了詳細(xì)說明,一起來學(xué)習(xí)下。2017-12-12sqlserver添加sa用戶和密碼的實(shí)現(xiàn)
這篇文章主要介紹了sqlserver添加sa用戶和密碼的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04sqlserver數(shù)據(jù)庫最大Id沖突問題解決方法之一
在一個(gè)特定的表中保存最大Id,通過記錄來取每次的唯一最大值2011-12-12SQL入侵恢復(fù)xp_cmdshell方法總結(jié)
恢復(fù)xp_cmdshell SQL Server阻止了對組件 'xp_cmdshell' 的過程'sys.xp_cmdshell' 啟用2010-08-08