sqlserver 表中记录生成insert,可以加条件,可以生成建表语句

  1. create PROCEDURE [sp_getinsert]
  2. (
  3. @tablename VARCHAR(256) , --如果非默认架构,可以加上架构名 例如:schema1.tablename
  4. @where VARCHAR(1000) = '',
  5. @create BIT =0
  6. )
  7. AS
  8. BEGIN
  9. SET NOCOUNT ON;
  10.  
  11. IF @create=1
  12. EXEC sp_gettext @name=@tablename,@identity=1,@index=2;
  13.  
  14. DECLARE @sqlstr VARCHAR(max)= '';
  15. DECLARE @sqlstr1 VARCHAR(max);
  16. DECLARE @sqlstr2 VARCHAR(max) ,
  17. @HasIdentity BIT;
  18.  
  19. SET @HasIdentity = OBJECTPROPERTY(OBJECT_ID(@tablename),
  20. 'TableHasIdentity');
  21.  
  22. IF ( @HasIdentity = 1 )
  23. SET @sqlstr = @sqlstr + ' select ''SET IDENTITY_INSERT '
  24. + @tablename + ' ON'' UNION ALL ' + CHAR(10);
  25.  
  26. SELECT @sqlstr = @sqlstr + 'select ''insert ' + @tablename;
  27. SELECT @sqlstr1 = '';
  28. SELECT @sqlstr2 = ' (';
  29. SELECT @sqlstr1 = ' values ( ''+';
  30. SELECT @sqlstr1 = @sqlstr1 + col + '+'',''+',
  31. @sqlstr2 = @sqlstr2 + QUOTENAME(name) + ','
  32. FROM (
  33. SELECT CASE
  34. -- when a.xtype =173 then 'case when '+QUOTENAME(a.name)+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+QUOTENAME(a.name) +')'+' end'
  35. WHEN a.xtype = 127
  36. THEN 'case when ' + QUOTENAME(a.name)+(CASE WHEN collation ='Chinese_PRC_CI_AS' THEN '' ELSE ' collate '+collation COLLATE DATABASE_DEFAULT end)
  37. + ' is null then ''NULL'' else '
  38. + 'convert(varchar(20),'
  39. + QUOTENAME(a.name) + ')' + ' end'
  40. WHEN a.xtype = 104
  41. THEN 'case when ' + QUOTENAME(a.name)
  42. + ' is null then ''NULL'' else '
  43. + 'convert(varchar(1),'
  44. + QUOTENAME(a.name) + ')' + ' end'
  45. WHEN a.xtype = 175
  46. THEN 'case when ' + QUOTENAME(a.name)
  47. + ' is null then ''NULL'' else '
  48. + '''''''''+' + 'replace('
  49. + QUOTENAME(a.name)
  50. + ','''''''','''''''''''')'
  51. + '+''''''''' + ' end'
  52. WHEN a.xtype = 61
  53. THEN 'case when ' + QUOTENAME(a.name)
  54. + ' is null then ''NULL'' else '
  55. + '''''''''+' + 'convert(varchar(23),'
  56. + QUOTENAME(a.name) + ',121)'
  57. + '+''''''''' + ' end'
  58. WHEN a.xtype = 106
  59. THEN 'case when ' + QUOTENAME(a.name)
  60. + ' is null then ''NULL'' else '
  61. + 'convert(varchar('
  62. + CONVERT(VARCHAR(4), a.xprec + 2)
  63. + '),' + QUOTENAME(a.name) + ')'
  64. + ' end'
  65. WHEN a.xtype = 62
  66. THEN 'case when ' + QUOTENAME(a.name)
  67. + ' is null then ''NULL'' else '
  68. + 'convert(varchar(23),'
  69. + QUOTENAME(a.name) + ',2)' + ' end'
  70. WHEN a.xtype = 56
  71. THEN 'case when ' + QUOTENAME(a.name)
  72. + ' is null then ''NULL'' else '
  73. + 'convert(varchar(11),'
  74. + QUOTENAME(a.name) + ')' + ' end'
  75. WHEN a.xtype = 60
  76. THEN 'case when ' + QUOTENAME(a.name)
  77. + ' is null then ''NULL'' else '
  78. + 'convert(varchar(22),'
  79. + QUOTENAME(a.name) + ')' + ' end'
  80. WHEN a.xtype = 239
  81. THEN 'case when ' + QUOTENAME(a.name)
  82. + ' is null then ''NULL'' else '
  83. + '''''''''+' + 'replace('
  84. + QUOTENAME(a.name)
  85. + ','''''''','''''''''''')'
  86. + '+''''''''' + ' end'
  87. WHEN a.xtype = 108
  88. THEN 'case when ' + QUOTENAME(a.name)
  89. + ' is null then ''NULL'' else '
  90. + 'convert(varchar('
  91. + CONVERT(VARCHAR(4), a.xprec + 2)
  92. + '),' + QUOTENAME(a.name) + ')'
  93. + ' end'
  94. WHEN a.xtype = 231
  95. THEN 'case when ' + QUOTENAME(a.name)
  96. + ' is null then ''NULL'' else '
  97. + '''''''''+' + 'replace('
  98. + QUOTENAME(a.name)
  99. + ','''''''','''''''''''')'
  100. + '+''''''''' + ' end'
  101. WHEN a.xtype = 59
  102. THEN 'case when ' + QUOTENAME(a.name)
  103. + ' is null then ''NULL'' else '
  104. + 'convert(varchar(23),'
  105. + QUOTENAME(a.name) + ',2)' + ' end'
  106. WHEN a.xtype = 58
  107. THEN 'case when ' + QUOTENAME(a.name)
  108. + ' is null then ''NULL'' else '
  109. + '''''''''+' + 'convert(varchar(23),'
  110. + QUOTENAME(a.name) + ',121)'
  111. + '+''''''''' + ' end'
  112. WHEN a.xtype = 52
  113. THEN 'case when ' + QUOTENAME(a.name)
  114. + ' is null then ''NULL'' else '
  115. + 'convert(varchar(12),'
  116. + QUOTENAME(a.name) + ')' + ' end'
  117. WHEN a.xtype = 122
  118. THEN 'case when ' + QUOTENAME(a.name)
  119. + ' is null then ''NULL'' else '
  120. + 'convert(varchar(22),'
  121. + QUOTENAME(a.name) + ')' + ' end'
  122. WHEN a.xtype = 48
  123. THEN 'case when ' + QUOTENAME(a.name)
  124. + ' is null then ''NULL'' else '
  125. + 'convert(varchar(6),'
  126. + QUOTENAME(a.name) + ')' + ' end'
  127. -- when a.xtype =165 then 'case when '+QUOTENAME(a.name)+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+QUOTENAME(a.name) +')'+' end'
  128. WHEN a.xtype = 167
  129. THEN 'case when ' + QUOTENAME(a.name)+(CASE WHEN collation ='Chinese_PRC_CI_AS' THEN '' ELSE ' collate '+collation COLLATE DATABASE_DEFAULT end)
  130. + ' is null then ''NULL'' else '
  131. + '''''''''+' + 'replace('
  132. + QUOTENAME(a.name)+(CASE WHEN collation ='Chinese_PRC_CI_AS' THEN '' ELSE ' collate '+collation COLLATE DATABASE_DEFAULT end)
  133. + ','''''''','''''''''''')'
  134. + '+''''''''' + ' end'
  135. ELSE '''NULL'''
  136. END AS col, a.colid, a.name
  137. FROM syscolumns a
  138. WHERE a.id = OBJECT_ID(@tablename)
  139. AND a.xtype <> 189
  140. AND a.xtype <> 34
  141. AND a.xtype <> 35
  142. AND a.xtype <> 36
  143. ) t
  144. ORDER BY colid;
  145.  
  146. SELECT @sqlstr = @sqlstr + LEFT(@sqlstr2, LEN(@sqlstr2) - 1) + ') '
  147. + LEFT(@sqlstr1, LEN(@sqlstr1) - 3) + ')'' from ' + @tablename
  148. + ( CASE WHEN @where IS NOT NULL
  149. AND LEN(@where) > 0 THEN ' where ' + @where
  150. ELSE ''
  151. END );
  152.  
  153. IF ( @HasIdentity = 1 )
  154. SET @sqlstr = @sqlstr
  155. + ' UNION ALL select ''SET IDENTITY_INSERT ' + @tablename
  156. + ' OFF'' ' + CHAR(10);
  157.  
  158. PRINT @sqlstr;
  159. EXEC( @sqlstr);
  160. SET NOCOUNT OFF;
  161. END;

调用示例:

  1. exec [sp_getinsert] @tablename='tablename',@where='id>5 ',@create=0

sqlserver 表中记录生成insert,可以加条件,可以生成建表语句的更多相关文章

  1. TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。

    TRUNCATE 删除表,无法回退.默认选择为整个表的内容,所以不能加条件.DELETE 删除表,可以回退.可以带where 条件.建议使用delete.但是TRUNCATE 删除表数据比delete ...

  2. SQL语句的使用,SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据

    SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法. 但是 SQL 语言也包含用于更新. ...

  3. 取得表中数据的insert语句

    Build Insert Statements for the Existing Data in Tables 下面这个脚本实现了取得一个非空表中的所有insert语句 This script bui ...

  4. NSIS:在注册表中记录安装路径以便重装或升级时读取

    原文 NSIS:在注册表中记录安装路径以便重装或升级时读取 在NSIS中,这个功能是非常有用的,可以避免用户把程序安装到多个位置的尴尬. 第1步:在“安装目录选择页面”前面加入以下代码: 1 !def ...

  5. oracle数据库误删的表以及表中记录的恢复

    oracle数据库误删的表以及表中记录的恢复 一.表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的.一般步骤有: --1.从flash bac ...

  6. sql 循环表中记录

    =========================================================================循环排序查询数据=================== ...

  7. hbase使用MapReduce操作3(实现将 fruit 表中的一部分数据,通过 MR 迁入到 fruit_mr 表中)

    Runner类 实现将 fruit 表中的一部分数据,通过 MR 迁入到 fruit_mr 表中. package com.yjsj.hbase_mr; import org.apache.hadoo ...

  8. SQL迅速增加表中记录语句

    很多时候我么需要为表中疯狂增加N条记录,那么我们该使用什么语句实现该功能呢?如下: insert into 表名(字段1,字段2,字段3....)  select 字段1,字段2,字段3.... fr ...

  9. 【转】MySQL数据表中记录不存在则插入,存在则更新

    mysql 记录不存在时插入在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问 ...

随机推荐

  1. selector属性介绍

    本文来自:http://blog.csdn.net/brokge/article/details/9713041 简介: 根据不同的选定状态来定义不同的现实效果 分为四大属性: android:sta ...

  2. vue quill editor输入文字出现首字母的问题

    当使用vue quill editor输入中文时,第一个中文的汉语拼音第一个字母会显示如图. 解决的办法就是升级vue quill editor js文件的版本,目前的我升级之后ok的版本是 < ...

  3. 安卓之上传文件,即HTTP提交表单

    获取文件: public void Init()    {        noScrollgridview = (GridView) findViewById(R.id.noScrollgridvie ...

  4. C# WebBrowser控件使用整理

    一.简介 WebBrowser 控件为 WebBrowser ActiveX 控件提供了托管包装. 托管包装使您可以在 Windows 窗体客户端应用程序中显示网页. 使用WebBrowser 控件, ...

  5. Guava Finalizer

    /* * Copyright (C) 2008 The Guava Authors Licensed under the Apache License, Version 2.0 (the " ...

  6. spring boot成功启动后访问报错404的问题

    Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as ...

  7. ASP.NET Razor 简介

    ylbtech-.NET: ASP.NET Razor 简介 Razor 不是一种编程语言.它是服务器端的标记语言. 1. 什么是 Razor?返回顶部 Razor 是一种标记语法,可以让您将基于服务 ...

  8. Mongodb的windows服务安装和卸载

    不用 InstallUtil.exe,直接用mongod.exe做就可以: 安装:mongod --dbpath "C:\mongodb\db" --logpath "C ...

  9. 浅谈 Boost.Asio 的多线程模型

    Boost.Asio 有两种支持多线程的方式,第一种方式比较简单:在多线程的场景下,每个线程都持有一个io_service,并且每个线程都调用各自的io_service的run()方法. 另一种支持多 ...

  10. 第三章 Typescript 基本数据类型

    Typescript 基本数据类型 一.基本数据类型 Boolean Number String Array Tuple Enum Any Void Null 和 Undefined Never 二. ...