SQL抽取数据脚本

2023-11-18

/*----------------------------------------------------------*/
/*    [sp_OutputData]                                       */
/*----------------------------------------------------------*/
IF EXISTS ( SELECT 1 FROM sys.objects o WHERE object_id = object_id( N'[sp_OutputData]' ) AND OBJECTPROPERTY( object_id, N'IsProcedure') = 1 )
DROP PROCEDURE [sp_OutputData]
GO
CREATE PROC sp_OutputData 

@tablename sysname,
@Where VARCHAR(4000)='', --where条件语句
@OrderBy VARCHAR(4000)='', --order by 语句
@IfNotExistsColumn VARCHAR(4000)='' --生成 IF NOT EXISTS(SELECT 1 FROM @tablename WHERE @IfNotExistsColumn=@columndata)
 )
AS 
begin
   set nocount on
   declare @column varchar( 4000 ) 
   declare @columndata varchar( 4000 ) 
   declare @sql varchar( max ) 
   declare @xtype tinyint 
   declare @name sysname 
   declare @objectId int 
   declare @objectname sysname 
   declare @ident INT
   DECLARE @IfNotExistsColumnData VARCHAR(4000) 
   DECLARE @IsTempTable BIT --是否临时表 1:是 0:否
   
   
   set nocount on 
   
   IF LEFT(@tablename, 1)='#' AND
      EXISTS(SELECT 1 FROM TEMPDB..SYSOBJECTS WHERE ID=OBJECT_ID('TEMPDB..'+@tablename) AND XTYPE='U')
     SET @IsTempTable=1
   ELSE   
     SET @IsTempTable=0
     
   IF @IsTempTable=0   
     set @objectId = object_id( @tablename ) 
   ELSE
     set @objectId = object_id( 'TEMPDB..'+@tablename ) 
       
   if( @objectId is null )-- 判斷對象是否存在 
   begin 
      print 'The object not exists' 
      return 
   end 
   
   IF @IsTempTable=0   
   BEGIN 
      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 ) 
      begin
         print 'SET IDENTITY_INSERT '+@TableName+' ON' 
      END
   END  
   
   IF @Where<>'' AND LEFT(@Where, LEN('WHERE'))<>'WHERE' 
      SET @Where='WHERE '+@Where
   IF @OrderBy<>'' AND LEFT(@OrderBy, LEN('ORDER BY'))<>'ORDER BY' 
      SET @OrderBy='ORDER BY '+@OrderBy      
   
   declare syscolumns_cursor cursor for 
   SELECT a.name,a.xtype
   FROM
   (
   select c.name,c.xtype, c.colid from syscolumns c where c.id = @objectid AND @IsTempTable=0
      UNION
   select c.name,c.xtype, c.colid from TEMPDB..syscolumns c where c.id = @objectid AND @IsTempTable=1
   ) a    
    order by a.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( 189,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(241 ) then ''''''''' + convert(varchar(max), ' + @name + ') + ''''''''' --xml
                                     when @xtype in( 231,239 ) then '''N'''''' + ' + @name + ' + ''''''''' --nvarchar,nchar 
                                     when @xtype = 61 then ''''''''' + convert( char( 23 ),' + @name + ',121 ) + ''''''''' --datetime 
                                     when @xtype = 40 then ''''''''' + convert( char( 10 ),' + @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 
            IF @IfNotExistsColumn<>'' AND @name=@IfNotExistsColumn
            BEGIN                         
               SET @IfNotExistsColumnData=case when @xtype in( 167, 175 ) then ''''''''' + ' + @name + ' + ''''''''' --varchar,char 
                                     when @xtype in(241 ) then ''''''''' + convert(varchar(max), ' + @name + ') + ''''''''' --xml
                                     when @xtype in( 231,239 ) then '''N'''''' + ' + @name + ' + ''''''''' --nvarchar,nchar 
                                     when @xtype = 61 then ''''''''' + convert( char( 23 ),' + @name + ',121 ) + ''''''''' --datetime 
                                     when @xtype = 40 then ''''''''' + convert( char( 10 ),' + @name + ',121 ) + ''''''''' --datetime 
                                     when @xtype = 58 then ''''''''' + convert( char( 16 ),' + @name + ',120 ) + ''''''''' --smalldatetime 
                                     when @xtype = 36 then ''''''''' + convert( char( 36 ),' + @name + ' ) + ''''''''' --uniqueidentifier 
                                     else 'CAST('+@name+' AS VARCHAR)'
                                     end                        
            END 
         end 
      end 
      fetch next from syscolumns_cursor into @name,@xtype 
   end 
   close syscolumns_cursor 
   deallocate syscolumns_cursor 
   
   IF @IfNotExistsColumn=''
   BEGIN
      set @sql = 'set nocount on select ''insert [' + @tablename + '] ( ' + @column + ' ) values( ''as ''--'',' + @columndata + ','' )'' from ' + @tablename 
   END ELSE
   BEGIN
      set @sql = 'set nocount on'+CHAR(13)+CHAR(10)+
                 'select'+CHAR(13)+CHAR(10)+ 
                 '''IF NOT EXISTS(SELECT 1 FROM [' + @tablename + '] WHERE '+@IfNotExistsColumn+'=''+'+@IfNotExistsColumnData+'+'') insert [' + @tablename + '] ( ' + @column + ' ) values( ''as ''--'',' + @columndata + ','' )'' from ' + @tablename 
   END
   
   IF @where<>''
     SET @sql=@sql+CHAR(13)+CHAR(10)+@where
   IF @orderby<>''
     SET @sql=@sql+CHAR(13)+CHAR(10)+@orderby     
     
   print '--'+@sql 
   exec( @sql )    
   
   if( @ident is not null )
   begin
      print 'SET IDENTITY_INSERT '+@TableName+' OFF' 
   end
   set nocount off
end
GO
执行:EXEC sp_OutputData 'A1SysParameter','SysParameterCode LIKE ''Tunnel%''','','SysParameterCode'

即可抽取插入数据的脚本。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL抽取数据脚本 的相关文章

  • cuda求矩阵每一行最大值

    2 完成一个尺寸512 512的二维数组的每一行最大值的并行程序实现数据类型设置为float 需要完成4个版本 1 不使用共享内存 只使用全局内存 采用具有分支发散的并行归约 include cuda runtime h include d
  • Spring Cloud OAuth2 搭建授权服务器 + 客户端 + 令牌中继

    SpringBoot 版本2 1 4 RELEASE Spring Cloud版本Greenwich RELEASE 说明 token采用redis存储 用户信息采用数据库存储 oauth2官网整合springboot的例子 含服务端配置和
  • OpenJDK源码阅读-Oop&Klass

    文章目录 oop klass OBJECT hierarchy metadata hierarchy klass hierarchy oop classDiagram description klass classDiagram descr
  • Android Studio 4.0 gradle-6.1.1-all.zip 下载速率太慢或失败解决办法

    今天在家里电脑上新装了Android Studio 4 0 gradlegradle 6 1 1 all zip 下载速度实在是太慢了 后来尝试在https downloads gradle dn com distributions gra
  • python编程语言的优缺点-python语言的特点(优缺点)总结

    BEGIN 优点 1 简单 设计原则 简单 优雅 明确 易于学习 较少的关键字 结构简单 易于阅读 python代码定义更清晰 易于维护 源代码容易维护 2 广泛的开源库 丰富的第三方库 3 互动模式 支持互动模式 可从终端输入执行代码并得
  • 深入理解java反射机制

    一 java的核心机制 java有两种核心机制 java虚拟机 JavaVirtual Machine 与垃圾收集机制 Garbage collection Java虚拟机 是运行所有Java程序的抽象计算机 是Java语言的运行环境 在其
  • 如何学习大数据

    文章目录 每日一句正能量 前言 一 什么是大数据 二 大数据的应用领域 三 社会对大数据的人才需求 四 大数据的学习路线 后记 每日一句正能量 多数人认为 一旦达到某个目标 人们就会感到身心舒畅 但问题是你可能永远达不到目标 把快乐建立在还
  • 看到了一个 蒙特卡洛方法 随机数得出 圆周率的c++ 源码

    package bt6 import java util Random 看到了一个 蒙特卡洛方法 随机数得出 圆周率的c 源码 复制过来 一个Java版的见笑了 author suifeng public class PITest publ
  • sqlmap过SQLi-LABS靶场 11-20关

    第11关 后面基本都是post注入了 不过我们用的是神器sqlmap 我们先随便输入 然后bp抓包 把抓到的包保存问txt格式 然后在sqlmap 指定他 用 r sqlmap py r C Users Administrator Desk
  • 记录shardingsphere 5.0.0的一个问题

    shardingsphere的一个问题 最近shardingsphere更新了5 0 0版本 加入了很多新特性 所以我在自己的练习项目中想启动配置启动一下 但是并不是那么顺利 升级之后就直接无法启动了 根据错误栈提示是找不到一个名为Mode
  • Android studio 模拟器启动黑屏解决办法附图详细

    Android studio 模拟器启动黑屏解决办法附图详细 问题描述 原因分析 android模拟器在创建时 一般默认设置为热启动 所以每次关闭模拟器时 会提示保存当前运行界面状态 若选择取消 则下一次启动会以最近一次保存的状态启动显示
  • Pycharm安装CV2

    1 win r 然后输入cmd进入中端 安装的指令用 pip install opencv python i http mirrors aliyun com pypi simple trusted host mirrors aliyun c
  • husky hooks 不起作用的解决方法

    问题 在项目实际应用过程中遇到过一次 husky hooks 不生效的问题 这里记录下 问题表现 问题比较直观 通过 huksy install 之后 git commit 时 pre commit 设置的 hooks 不起作用 重新安装
  • 最详细的Vivado安装教程

    V i v a d o 安 装
  • Date类型与字符串的相互转换

    Date时间类型与字符串的相互转换 Test public void date throws ParseException 一 Date时间类型转字符串 1 获取当前时间 Date date new Date 2 设定时间格式 下面两行可以
  • 2017蓝桥杯C++A组题解集合

    总结 蓝桥杯的题目大多数都是暴利或者dfs bfs解出来的 注意往这上面思考 下面是赛题的链接 https wenku baidu com view 951dab772a160b4e767f5acfa1c7aa00b52a9d2d html
  • 程序发生run time error原因及解决方案

    程序发生run time error原因及解决方案 runtime error现象即产生原因 属于运行时错误 当程序运行到一半 程序发生崩溃 1 数组过小 2 除数为零 3 大数组定义在函数内 4 指针越界 5 还有可能是程序抛出了未接收的
  • angular Model 指令

    ng model指令用于绑定应用程序数据到HTML控制器 input select textarea 的值 可以将输入域的值域AngularJS创建的变量绑定 并且支持双向绑定 如下例子 div name div
  • elementUI使用el-upload上传文件写法总结及避坑,上传图片/视频到本地/服务器以及回显+删除

    Element Upload 上传 Element Upload官方文档 el upload 具体细节只看官方文档 本篇主要介绍避坑点和用法总结 注意点以及坑 本地上传想要回显图片视频 使用on success是没办法再在上传后获取到本地文
  • 20个简洁的 JS 代码片段

    20个简洁的 JS 代码片段 1 单行 If Else 语句 这是许多编程语言的共同特征 你可以使用三元运算符用一行代码编写整个语句 而不是在多行上编写 if else 例如 const age 12 let ageGroup LONG F

随机推荐

  • proteus8.9仿真闪退怎么解决?如何找到ProgramData?

    proteus8 9仿真闪退 将C Program Files x86 Labcenter Electronics Proteus 8 Professional 中MODELS文件夹复制到C ProgramData Labcenter El
  • 线性代数---之正交向量

    转载 百度百科 正交向量 编辑 本词条由 科普中国 百科科学词条编写与应用工作项目审核 正交向量 是一个数学术语 指点积为零的两个或多个向量 几何向量的概念在 线性代数中经由抽象化 得到更一般的向量概念 此处向量定义为 向量空间的元素 要注
  • 【计算机视觉

    文章目录 一 检测相关 11篇 1 1 Follow Anything Open set detection tracking and following in real time 1 2 YOLO MS Rethinking Multi
  • 【分治法】中位数问题和Gray码问题——武汉理工大学算法分析与设计课程实验

    i 中位数问题 问题描述 设X 0 n 1 和Y 0 n 1 为两个数组 每个数组中含有n个已排好序的数 找出X和Y的2n个数的中位数 编程任务 利用分治策略试设计一个O log n 时间的算法求出这2n个数的中位数 数据输入 由文件inp
  • sublime text添加install package报错 Package Control There are no packages available for installation

    sublime text在使用插件之前 需要安装Package Control插件 但在安装时报错 There are no packages available for installation 也就是说无法获取安装所需的包 首先确认网络
  • 基于java项目 服务器远程debug开启教程

    首先 在我们的工作中避免不了进行远程调试 我们可以通过远程debug的方式去调试我们的程序代码 通常我们的spring项目打成包的方式有jar 或者war包发布到我们的远程服务器上 我们先介绍第一种jar包方式开启远程debug 打成jar
  • JAVA 面向对象

    第五章 面向对象 面向对象技术利用对现实世界中对象的抽象和对象之间相互关联及相互作用的描述来对现实世界进行模拟 并且使其映射到目标系统中 其以基本对象模型为单位 将对象内部处理细节封装在模型内部 重视对象模块间的接口联系和对象与外部环境间的
  • 关于GRE over IPsec及IPsec over GRE

    GRE over IPsec IPsec over GRE IPSec Over GRE是先ipsec后gre 这种我没用过 GRE Over IPSec 是先gre后ipsec 也就是说ipsec是最后的承载方式 一般常用的就是这种 解决
  • 最详细的Python安装教程

    最详细的Python安装教程 一 进入Python官网首页 下载最新的Python版本 https www python org downloads 选择最新的Python3 10 5 下载64位的版本 二 下载完成后 进行安装 1 双击P
  • 数字图像处理(入门篇)六 图像数据预处理之坐标变化

    目录 1 平移 2 镜像 3 旋转 4 缩放 图像的坐标变换又称为图像的几何计算 常见的基本变换包括 平移 旋转 镜像和缩放等等 1 平移 1 代码 使用OpenCV仿射变换函数 cv2 warpAffine 实现平移操作 import n
  • 前端vue可以左右滚动的切换的tabs tabs选项卡 滑动动画效果 自动宽度

    随着技术的发展 开发的复杂度也越来越高 传统开发方式将一个系统做成了整块应用 经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改 造成牵一发而动全身 通过组件化开发 可以有效实现单独开发 单独维护 而且他们之间可以
  • Feign原理 (图解)

    1 1 简介 Feign远程调用的 Feign远程调用 核心就是通过一系列的封装和处理 将以JAVA注解的方式定义的远程调用API接口 最终转换成HTTP的请求形式 然后将HTTP的请求的响应结果 解码成JAVA Bean 放回给调用者 F
  • namespace命令空间

    目录 1 解决什么问题 2 基本介绍 2 1 定义 2 2 应用场景 3 使用案例 4 资源配额 5 标签 5 1 定义 5 2 pod资源打标签 5 3 查看标签 1 解决什么问题 命令空间类似于C 中的命名空间 当用户数量较多的集群 才
  • 使用docker搭建jupyter notebook/jupyterlab

    说明 由于官方镜像实在是不怎么好用 所以我自己做了一个优化过的jupyter notebook的镜像 notebook hub 使用我这个镜像搭建容器非常简单 下面就基于这个notebook hub来进行搭建 关于notebook hub
  • hive 报system:java.io.tmpdir错误解决

    Exception in thread main java lang IllegalArgumentException java net URISyntaxException Relative path in absolute URI sy
  • 2. IDEA + maven + protobuf配置(on mac)

    1 絮絮叨叨 都说懒惰是人类进步的源泉 有时候想想还真就那么回事 学习了如何使用protoc命令编译 重度依赖IDEA且已经习惯了maven的我 就在想是否能在IDEA中一键编译 proto文件 2 vscode配置protobuf编辑环境
  • pyecharts实现电影数据分析可视化

    根据电影数据 使用pyecharts进行可视化分析 数据介绍 import pandas as pd data pd read csv 电影 csv data head 前5行数据如下 需要安装的python库 pip install pa
  • 2.晶晨A311D-编译Ubuntu/Debian固件

    上面是我的微信和QQ群 欢迎新朋友的加入 参考 https docs khadas com zh cn vim3 FenixScript html 编译环境 我重新安装了ubuntu20 安装软件包 配置环境 sudo apt get in
  • 【数据结构】排序(直接插入、折半插入、希尔、冒泡、快速、直接选择、堆、归并、基数排序)

    一 什么是排序 排序 将一组杂乱无章的数据按一定规律顺次排列起来 即 将无序序列的数据节点包含多个数据域 那么排序往往是针对其中某个域而言 二 排序方法的分类 1 按数据存储介质可分为 内部排序 数据量不大 数据在内存 无需内外存交换数据
  • SQL抽取数据脚本

    sp OutputData IF EXISTS SELECT 1 FROM sys objects o WHERE object id object id N sp OutputData AND OBJECTPROPERTY object