视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
sqlserver将表内容导出insert语句
2020-11-09 07:38:51 责编:小采
文档


GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER OFFGOcreate procedure [dbo].[BicashyOutputData](@tablename varchar(256),@whereStr varchar(256)) AS declare @column varchar(1000) declare @columndata varchar(1000) declare @sql varchar(4000) declar

GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
create procedure [dbo].[BicashyOutputData](@tablename varchar(256),@whereStr varchar(256)) 
AS 
declare @column varchar(1000) 
declare @columndata varchar(1000) 
declare @sql varchar(4000) 
declare @xtype tinyint 
declare @name sysname 
declare @objectId int 
declare @objectname sysname 
declare @ident int 
 
set nocount on 
set @objectId=object_id(@tablename) 
 
if @objectId is null -- 判斷對象是否存在 
begin 
print 'The object not exists' 
return 
end 
set @objectname=rtrim(object_name(@objectId)) 
 
if @objectname is null or charindex(@objectname,@tablename)=0 --此判断不严密 
begin 
print 'object not in current database' 
return 
end 
 
if OBJECTPROPERTY(@objectId,'IsTable') < > 1 -- 判斷對象是否是table 
begin 
print 'The object is not table' 
return 
end 
 
select @ident=status&0x80 from syscolumns where id=@objectid and status&0x80=0x80 
 
if @ident is not null 
print 'SET IDENTITY_INSERT '+@TableName+' ON' 
 
declare syscolumns_cursor cursor 
 
for select c.name,c.xtype from syscolumns c where c.id=@objectid order by c.colid 
 
open syscolumns_cursor 
set @column='' 
set @columndata='' 
fetch next from syscolumns_cursor into @name,@xtype 
 
while @@fetch_status < >-1 
begin 
if @@fetch_status < >-2 
begin 
if @xtype not in(1,34,35,99,98) --timestamp不需处理,image,text,ntext,sql_variant 暂时不处理 
 
begin 
set @column=@column+case when len(@column)=0 then'' else ','end+@name 
 
set @columndata=@columndata+case when len(@columndata)=0 then '' else ','','',' 
end 
 
+case when @xtype in(167,175) then '''''''''+'+@name+'+''''''''' --varchar,char 
when @xtype in(231,239) then '''N''''''+'+@name+'+''''''''' --nvarchar,nchar 
when @xtype=61 then '''''''''+convert(char(23),'+@name+',121)+''''''''' --datetime 
when @xtype=58 then '''''''''+convert(char(16),'+@name+',120)+''''''''' --smalldatetime 
when @xtype=36 then '''''''''+convert(char(36),'+@name+')+''''''''' --uniqueidentifier 
else @name end 
 
end 
 
end 
 
fetch next from syscolumns_cursor into @name,@xtype 
 
end 
 
close syscolumns_cursor 
deallocate syscolumns_cursor 
 
set @sql='set nocount on select ''insert '+@tablename+'('+@column+') values(''as ''--'','+@columndata+','');'' from '+@tablename+' '+@whereStr 
 
print '--'+@sql 
exec(@sql) 
 
if @ident is not null 
print 'SET IDENTITY_INSERT '+@TableName+' OFF' 
 
 

用法:

exec BicashyOutputData
'表名', -- varchar(256)
'where语句' -- varchar(256)

如查询条件中含有字符串,需要在字符串前后加 “”

例子:

exec BicashyOutputData
'表名', -- varchar(256)
'where 字段名 in ("阿百川","大","地方") and COST is not null' -- varchar(256)

下载本文
显示全文
专题