zoukankan      html  css  js  c++  java
  • SQL Server 2005导出表中数据的SQL脚本形式(即INSERT语句)

     1 CREATE   proc spGenInsertSQL (@tablename varchar(256))
     2 as
     3 begin
     4 declare @sql varchar(8000)
     5 declare @sqlValues varchar(8000)
     6 set @sql =' ('
     7 set @sqlValues = 'values (''+'
     8 select @sqlValues = @sqlValues + cols + ' + '','' + ' ,@sql = @sql + '[' + name + '],'
     9 from
    10       (select case
    11                 when xtype in (48,52,56,59,60,62,104,106,108,122,127)       
    12 
    13                      then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end'
    14 
    15                 when xtype in (58,61)
    16 
    17                      then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end'
    18 
    19                when xtype in (167)
    20 
    21                      then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
    22 
    23                 when xtype in (231)
    24 
    25                      then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'
    26 
    27                 when xtype in (175)
    28 
    29                      then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar) + '))+'''''''''+' end'
    30 
    31                 when xtype in (239)
    32 
    33                      then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar) + '))+'''''''''+' end'
    34 
    35                 else '''NULL'''
    36 
    37               end as Cols,name
    38 
    39          from syscolumns 
    40 
    41         where id = object_id(@tablename)
    42 
    43       ) T
    44 set @sql ='select ''INSERT INTO ['+ @tablename + ']' + left(@sql,len(@sql)-1)+') ' + left(@sqlValues,len(@sqlValues)-4) + ')'' from '+@tablename
    45 print @sql
    46 exec (@sql)
    47 end
    48 GO

    使用方法: exec spGenInsertSQL '表名'

  • 相关阅读:
    单点登录cas常见问题(八)
    11G新特性 -- variable size extents
    11G新特性 -- ASM Fast Mirror Resync
    redhat 6.4 安装VirtualBox自动增强功能功:unable to find the sources of your current Linux kernel
    LINUX使用DVD光盘或者ISO作为本地YUM源
    数据库报ORA-00600: 内部错误代码, 参数: [17059],并产生大量trace日志文件
    Putty设置删除
    ssh/scp 远程连接ssh非默认端口方法
    查看LINUX版本
    RHCE7 -- systemctl命令
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2796441.html
Copyright © 2011-2022 走看看