sqlserver 导出插入脚本代码


  本文标签:导出插入

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

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