zoukankan      html  css  js  c++  java
  • SQL 导出表数据存储过程

    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    -- ============================================= 
    -- Author: 
    -- Create date:
    -- Description: 将表数据生成Insert脚本 
    -- Demo : exec pCreateInsertScript 'TestTable','1=1' 
    -- ============================================= 
    CREATE PROC [dbo].[pCreateInsertScript] (
    	@tablename VARCHAR(256)
    	,@con NVARCHAR(400)
    	)
    AS
    BEGIN
    	SET NOCOUNT ON
    
    	DECLARE @sqlstr VARCHAR(4000)
    	DECLARE @sqlstr1 VARCHAR(4000)
    	DECLARE @sqlstr2 VARCHAR(4000)
    
    	SELECT @sqlstr = 'select ''insert ' + @tablename
    
    	SELECT @sqlstr1 = ''
    
    	SELECT @sqlstr2 = '('
    
    	SELECT @sqlstr1 = 'values (''+'
    
    	SELECT @sqlstr1 = @sqlstr1 + col + '+'',''+'
    		,@sqlstr2 = @sqlstr2 + NAME + ','
    	FROM (
    		SELECT CASE 
    				WHEN a.xtype = 173
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(' + convert(VARCHAR(4), a.length * 2 + 2) + '),' + a.NAME + ')' + ' end'
    				WHEN a.xtype = 104
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(1),' + a.NAME + ')' + ' end'
    				WHEN a.xtype = 175
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + '''''''''+' + 'replace(' + a.NAME + ','''''''','''''''''''')' + '+''''''''' + ' end'
    				WHEN a.xtype = 61
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + '''''''''+' + 'convert(varchar(23),' + a.NAME + ',121)' + '+''''''''' + ' end'
    				WHEN a.xtype = 106
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(' + convert(VARCHAR(4), a.xprec + 2) + '),' + a.NAME + ')' + ' end'
    				WHEN a.xtype = 62
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(23),' + a.NAME + ',2)' + ' end'
    				WHEN a.xtype = 56
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(11),' + a.NAME + ')' + ' end'
    				WHEN a.xtype = 60
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(22),' + a.NAME + ')' + ' end'
    				WHEN a.xtype = 239
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + '''''''''+' + 'replace(' + a.NAME + ','''''''','''''''''''')' + '+''''''''' + ' end'
    				WHEN a.xtype = 108
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(' + convert(VARCHAR(4), a.xprec + 2) + '),' + a.NAME + ')' + ' end'
    				WHEN a.xtype = 231
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + '''''''''+' + 'replace(' + a.NAME + ','''''''','''''''''''')' + '+''''''''' + ' end'
    				WHEN a.xtype = 59
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(23),' + a.NAME + ',2)' + ' end'
    				WHEN a.xtype = 58
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + '''''''''+' + 'convert(varchar(23),' + a.NAME + ',121)' + '+''''''''' + ' end'
    				WHEN a.xtype = 52
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(12),' + a.NAME + ')' + ' end'
    				WHEN a.xtype = 122
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(22),' + a.NAME + ')' + ' end'
    				WHEN a.xtype = 127
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(6),' + a.NAME + ')' + ' end'
    				WHEN a.xtype = 48
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(6),' + a.NAME + ')' + ' end'
    				WHEN a.xtype = 165
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(' + convert(VARCHAR(4), a.length * 2 + 2) + '),' + a.NAME + ')' + ' end'
    				WHEN a.xtype = 167
    					THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + '''''''''+' + 'replace(' + a.NAME + ','''''''','''''''''''')' + '+''''''''' + ' end'
    				ELSE '''NULL'''
    				END AS col
    			,a.colid
    			,a.NAME
    		FROM syscolumns a
    		WHERE a.id = object_id(@tablename)
    			AND a.xtype <> 189
    			AND a.xtype <> 34
    			AND a.xtype <> 35
    			AND a.xtype <> 36
    		) t
    	ORDER BY colid
    
    	SELECT @sqlstr = @sqlstr + left(@sqlstr2, len(@sqlstr2) - 1) + ') ' + left(@sqlstr1, len(@sqlstr1) - 3) + ');'' from ' + @tablename + ' where 1=1 and ' + isnull(@con, '')
    
    	PRINT @sqlstr
    
    	EXEC (@sqlstr)
    
    	SET NOCOUNT OFF
    END
    GO
    

      

  • 相关阅读:
    快速开发框架-Lion Framework
    安装redis 及常见问题
    Redis安装手册
    关于TbSchedule任务调度管理框架的整合部署1
    关于TbSchedule任务调度管理框架的整合部署
    zookeeper实战:SingleWorker代码样例
    基于ZooKeeper的分布式Session实现
    基于ZooKeeper构建大规模配置系统
    解决克隆centos虚拟机后ip配置失败的问题
    Spark学习资料
  • 原文地址:https://www.cnblogs.com/wfcfan/p/3327072.html
Copyright © 2011-2022 走看看