服务器之家

服务器之家 > 正文

sqlserver 导出插入脚本代码

时间:2019-12-13 11:35     来源/作者:MSSQL教程网

当然有其它工具可以做这件事,但如果客户不允许你在服务器乱装东西时这个脚本就会有用了。 

复制代码代码如下:


DECLARE @tbImportTables table(tablename varchar(128), deleted tinyint) 

-- append tables which you want to import 
Insert Into @tbImportTables(tablename, deleted) values('tentitytype', 1) 
Insert Into @tbImportTables(tablename, deleted) values('tattribute', 1) 
-- append all tables 
--Insert Into @tbImportTables(tablename, deleted) select table_name, 1 from INFORMATION_SCHEMA.tables where table_type = 'BASE TABLE' 

DECLARE @tbImportScripts table(script varchar(max)) 

Declare @tablename varchar(128), 
@deleted tinyint, 
@columnname varchar(128), 
@fieldscript varchar(max), 
@valuescript varchar(max), 
@insertscript varchar(max) 

Declare curImportTables Cursor For 
Select tablename, deleted 
From @tbImportTables 

Open curImportTables 
Fetch Next From curImportTables Into @tablename, @deleted 

WHILE @@Fetch_STATUS = 0 
Begin 
  If (@deleted = 1) 
  begin 
    Insert into @tbImportScripts(script) values ('Truncate table ' + @tablename) 
  end 

  Insert into @tbImportScripts(script) values ('SET IDENTITY_INSERT ' + @tablename + ' ON') 

  set @fieldscript = '' 
  select @fieldscript = @fieldscript + column_name + ',' from INFORMATION_SCHEMA.columns where table_name = @tablename and data_type not in('timestamp', 'image') 
  set @fieldscript = substring(@fieldscript, 0, len(@fieldscript)) 

  set @valuescript = '' 
  select @valuescript = @valuescript + 'case when ' + column_name + ' is null then ''null'' else '''''''' + convert(varchar(max), ' + column_name + ') + '''''''' end +'',''+'   from INFORMATION_SCHEMA.columns where table_name = @tablename and data_type not in('timestamp', 'image') 
  set @valuescript = substring(@valuescript, 0, len(@valuescript) - 4) 

  set @insertscript = 'select ''insert into ' + @tablename + '(' + @fieldscript + ') values(' + '''+' + @valuescript + ' + '')'' from ' + @tablename 
  Insert into @tbImportScripts(script) exec ( @insertscript) 

  Insert into @tbImportScripts(script) values ('SET IDENTITY_INSERT ' + @tablename + ' OFF') 

  Insert into @tbImportScripts(script) values ('GO ') 
  Fetch Next From curImportTables Into @tablename, @deleted 
End 

Close curImportTables 
Deallocate curImportTables 

Select * from @tbImportScripts 

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
配置IIS网站web服务器的安全策略配置解决方案
配置IIS网站web服务器的安全策略配置解决方案 2019-05-23
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
返回顶部