使用存储过程导出数据脚本

CREATE   procedure   Z_SP_GenInsertSQL
(
        @TableName   varchar(256)
        ,@AllTopClause   varchar(1000)   =   ' '
        ,@WhereOrderByClause   varchar(1000)   =   ' '   -- 'where   1   =   1   order   by   null '
)
as
begin
/**//*
usage:
Z_SP_GenInsertSQL   'employees ', 'all   top   30   PERCENT   with   ties   ', 'where   [LastName]   is   not   null   order   by   employeeid   desc '
*/
        declare   @sql   varchar(8000)
        declare   @sqlValues   varchar(8000)
        set   @sql   =   '   ' '( ' ' '   +   char(13)   +   ', '
        set   @sqlValues   =   '   values   ( ' ' '+   char(13)   +   ', '
        select   @sqlValues   =   @sqlValues   +   cols   +   '   +   ' ', '   +   ' ' ' '   +   char(13)   +   ', '
                        ,@sql   =   @sql   +   ' ' '[ '   +   name   +   '], ' ' '   +   char(13)   +   ', '
        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,175)
                                        then   'case   when   '   +   name   +   '   is   null   then   ' 'NULL ' '   else   '   +   ' ' ' ' ' ' ' ' '   +   '   +   'replace( '   +   name   +   ', ' ' ' ' ' ' ' ', ' ' ' ' ' ' ' ' ' ' ' ') '   +   '   +   ' ' ' ' ' ' ' ' '   +   '   end '
                                when   xtype   in   (231,239)
                                        then   'case   when   '   +   name   +   '   is   null   then   ' 'NULL ' '   else   '   +   ' ' 'N ' ' ' ' ' '   +   '   +   'replace( '   +   name   +   ', ' ' ' ' ' ' ' ', ' ' ' ' ' ' ' ' ' ' ' ') '   +   '   +   ' ' ' ' ' ' ' ' '   +   '   end '
                                else   ' ' 'NULL ' ' '
                        end   as   Cols
                        ,name
                from   syscolumns
                where   id   =   object_id(@TableName)
                                --and   autoval   is   null   --忽略自增整型字段
        )   T
        set   @sql   =   'select   '   +   @AllTopClause   +   char(13)   +   ' ' 'INSERT   INTO   ' ' '   +   char(13)   +   ', '
                                  +   ' ' '[ '+   @TableName   +   '] ' ' '   +   char(13)   +   ', '
                                  +   left(@sql,len(@sql)-4)   +   ' ' ' '   +   char(13)   +   ', ' ') '   +   left(@sqlValues,len(@sqlValues)-7)   +   ', ' ') ' ' '
                                  +   char(13)   +   'from   [ '   +   @TableName   +   '] '
                                  +   char(13)   +   @WhereOrderByClause
        --select   @sql   --   select   SQL   被截断
        print   @sql   --   print   SQL   是完整正确的
        exec   (@sql)
/**//*
select   *
from   syscolumns        
where   id   =   object_id( 'test ')   and   autoval   is   null
*/
end

GO

CREATE   procedure   Z_SP_GenInsertSQL
(
        @TableName   varchar(256)
        ,@AllTopClause   varchar(1000)   =   ' '
        ,@WhereOrderByClause   varchar(1000)   =   ' '   -- 'where   1   =   1   order   by   null '
)
as
begin
/**//*
usage:
Z_SP_GenInsertSQL   'employees ', 'all   top   30   PERCENT   with   ties   ', 'where   [LastName]   is   not   null   order   by   employeeid   desc '
*/
        declare   @sql   varchar(8000)
        declare   @sqlValues   varchar(8000)
        set   @sql   =   '   ' '( ' ' '   +   char(13)   +   ', '
        set   @sqlValues   =   '   values   ( ' ' '+   char(13)   +   ', '
        select   @sqlValues   =   @sqlValues   +   cols   +   '   +   ' ', '   +   ' ' ' '   +   char(13)   +   ', '
                        ,@sql   =   @sql   +   ' ' '[ '   +   name   +   '], ' ' '   +   char(13)   +   ', '
        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,175)
                                        then   'case   when   '   +   name   +   '   is   null   then   ' 'NULL ' '   else   '   +   ' ' ' ' ' ' ' ' '   +   '   +   'replace( '   +   name   +   ', ' ' ' ' ' ' ' ', ' ' ' ' ' ' ' ' ' ' ' ') '   +   '   +   ' ' ' ' ' ' ' ' '   +   '   end '
                                when   xtype   in   (231,239)
                                        then   'case   when   '   +   name   +   '   is   null   then   ' 'NULL ' '   else   '   +   ' ' 'N ' ' ' ' ' '   +   '   +   'replace( '   +   name   +   ', ' ' ' ' ' ' ' ', ' ' ' ' ' ' ' ' ' ' ' ') '   +   '   +   ' ' ' ' ' ' ' ' '   +   '   end '
                                else   ' ' 'NULL ' ' '
                        end   as   Cols
                        ,name
                from   syscolumns
                where   id   =   object_id(@TableName)
                                --and   autoval   is   null   --忽略自增整型字段
        )   T
        set   @sql   =   'select   '   +   @AllTopClause   +   char(13)   +   ' ' 'INSERT   INTO   ' ' '   +   char(13)   +   ', '
                                  +   ' ' '[ '+   @TableName   +   '] ' ' '   +   char(13)   +   ', '
                                  +   left(@sql,len(@sql)-4)   +   ' ' ' '   +   char(13)   +   ', ' ') '   +   left(@sqlValues,len(@sqlValues)-7)   +   ', ' ') ' ' '
                                  +   char(13)   +   'from   [ '   +   @TableName   +   '] '
                                  +   char(13)   +   @WhereOrderByClause
        --select   @sql   --   select   SQL   被截断
        print   @sql   --   print   SQL   是完整正确的
        exec   (@sql)
/**//*
select   *
from   syscolumns        
where   id   =   object_id( 'test ')   and   autoval   is   null
*/
end

GO

 

 

在查询分析器中运行下面的语句进行调用:
Z_SP_GenInsertSQL  'UserInfo ', ' ', ' '

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值