sqlserver 表中记录生成insert,可以加条件,可以生成建表语句
sqlserver 表中记录生成insert,可以加条件,可以生成建表语句
create PROCEDURE [sp_getinsert]
(
@tablename VARCHAR(256) , --如果非默认架构,可以加上架构名 例如:schema1.tablename
@where VARCHAR(1000) = '',
@create BIT =0
)
AS
BEGIN
SET NOCOUNT ON; IF @create=1
EXEC sp_gettext @name=@tablename,@identity=1,@index=2; DECLARE @sqlstr VARCHAR(max)= '';
DECLARE @sqlstr1 VARCHAR(max);
DECLARE @sqlstr2 VARCHAR(max) ,
@HasIdentity BIT; SET @HasIdentity = OBJECTPROPERTY(OBJECT_ID(@tablename),
'TableHasIdentity'); IF ( @HasIdentity = 1 )
SET @sqlstr = @sqlstr + ' select ''SET IDENTITY_INSERT '
+ @tablename + ' ON'' UNION ALL ' + CHAR(10); SELECT @sqlstr = @sqlstr + 'select ''insert ' + @tablename;
SELECT @sqlstr1 = '';
SELECT @sqlstr2 = ' (';
SELECT @sqlstr1 = ' values ( ''+';
SELECT @sqlstr1 = @sqlstr1 + col + '+'',''+',
@sqlstr2 = @sqlstr2 + QUOTENAME(name) + ','
FROM (
SELECT CASE
-- 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'
WHEN a.xtype = 127
THEN 'case when ' + QUOTENAME(a.name)+(CASE WHEN collation ='Chinese_PRC_CI_AS' THEN '' ELSE ' collate '+collation COLLATE DATABASE_DEFAULT end)
+ ' is null then ''NULL'' else '
+ 'convert(varchar(20),'
+ QUOTENAME(a.name) + ')' + ' end'
WHEN a.xtype = 104
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ 'convert(varchar(1),'
+ QUOTENAME(a.name) + ')' + ' end'
WHEN a.xtype = 175
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ '''''''''+' + 'replace('
+ QUOTENAME(a.name)
+ ','''''''','''''''''''')'
+ '+''''''''' + ' end'
WHEN a.xtype = 61
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ '''''''''+' + 'convert(varchar(23),'
+ QUOTENAME(a.name) + ',121)'
+ '+''''''''' + ' end'
WHEN a.xtype = 106
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ 'convert(varchar('
+ CONVERT(VARCHAR(4), a.xprec + 2)
+ '),' + QUOTENAME(a.name) + ')'
+ ' end'
WHEN a.xtype = 62
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ 'convert(varchar(23),'
+ QUOTENAME(a.name) + ',2)' + ' end'
WHEN a.xtype = 56
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ 'convert(varchar(11),'
+ QUOTENAME(a.name) + ')' + ' end'
WHEN a.xtype = 60
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ 'convert(varchar(22),'
+ QUOTENAME(a.name) + ')' + ' end'
WHEN a.xtype = 239
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ '''''''''+' + 'replace('
+ QUOTENAME(a.name)
+ ','''''''','''''''''''')'
+ '+''''''''' + ' end'
WHEN a.xtype = 108
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ 'convert(varchar('
+ CONVERT(VARCHAR(4), a.xprec + 2)
+ '),' + QUOTENAME(a.name) + ')'
+ ' end'
WHEN a.xtype = 231
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ '''''''''+' + 'replace('
+ QUOTENAME(a.name)
+ ','''''''','''''''''''')'
+ '+''''''''' + ' end'
WHEN a.xtype = 59
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ 'convert(varchar(23),'
+ QUOTENAME(a.name) + ',2)' + ' end'
WHEN a.xtype = 58
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ '''''''''+' + 'convert(varchar(23),'
+ QUOTENAME(a.name) + ',121)'
+ '+''''''''' + ' end'
WHEN a.xtype = 52
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ 'convert(varchar(12),'
+ QUOTENAME(a.name) + ')' + ' end'
WHEN a.xtype = 122
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ 'convert(varchar(22),'
+ QUOTENAME(a.name) + ')' + ' end'
WHEN a.xtype = 48
THEN 'case when ' + QUOTENAME(a.name)
+ ' is null then ''NULL'' else '
+ 'convert(varchar(6),'
+ QUOTENAME(a.name) + ')' + ' end'
-- 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'
WHEN a.xtype = 167
THEN 'case when ' + QUOTENAME(a.name)+(CASE WHEN collation ='Chinese_PRC_CI_AS' THEN '' ELSE ' collate '+collation COLLATE DATABASE_DEFAULT end)
+ ' is null then ''NULL'' else '
+ '''''''''+' + 'replace('
+ QUOTENAME(a.name)+(CASE WHEN collation ='Chinese_PRC_CI_AS' THEN '' ELSE ' collate '+collation COLLATE DATABASE_DEFAULT end)
+ ','''''''','''''''''''')'
+ '+''''''''' + ' 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
+ ( CASE WHEN @where IS NOT NULL
AND LEN(@where) > 0 THEN ' where ' + @where
ELSE ''
END ); IF ( @HasIdentity = 1 )
SET @sqlstr = @sqlstr
+ ' UNION ALL select ''SET IDENTITY_INSERT ' + @tablename
+ ' OFF'' ' + CHAR(10); PRINT @sqlstr;
EXEC( @sqlstr);
SET NOCOUNT OFF;
END;
调用示例:
exec [sp_getinsert] @tablename='tablename',@where='id>5 ',@create=0
sqlserver 表中记录生成insert,可以加条件,可以生成建表语句的更多相关文章
- TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。
TRUNCATE 删除表,无法回退.默认选择为整个表的内容,所以不能加条件.DELETE 删除表,可以回退.可以带where 条件.建议使用delete.但是TRUNCATE 删除表数据比delete ...
- SQL语句的使用,SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据
SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法. 但是 SQL 语言也包含用于更新. ...
- 取得表中数据的insert语句
Build Insert Statements for the Existing Data in Tables 下面这个脚本实现了取得一个非空表中的所有insert语句 This script bui ...
- NSIS:在注册表中记录安装路径以便重装或升级时读取
原文 NSIS:在注册表中记录安装路径以便重装或升级时读取 在NSIS中,这个功能是非常有用的,可以避免用户把程序安装到多个位置的尴尬. 第1步:在“安装目录选择页面”前面加入以下代码: 1 !def ...
- oracle数据库误删的表以及表中记录的恢复
oracle数据库误删的表以及表中记录的恢复 一.表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的.一般步骤有: --1.从flash bac ...
- sql 循环表中记录
=========================================================================循环排序查询数据=================== ...
- hbase使用MapReduce操作3(实现将 fruit 表中的一部分数据,通过 MR 迁入到 fruit_mr 表中)
Runner类 实现将 fruit 表中的一部分数据,通过 MR 迁入到 fruit_mr 表中. package com.yjsj.hbase_mr; import org.apache.hadoo ...
- SQL迅速增加表中记录语句
很多时候我么需要为表中疯狂增加N条记录,那么我们该使用什么语句实现该功能呢?如下: insert into 表名(字段1,字段2,字段3....) select 字段1,字段2,字段3.... fr ...
- 【转】MySQL数据表中记录不存在则插入,存在则更新
mysql 记录不存在时插入在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问 ...
随机推荐
- BZOJ 3172 [Tjoi2013]单词 AC自己主动机(fail树)
题意:链接 方法:AC自己主动机与fail树性质 解析:复习AC自己主动机的第一道题?(真正的第一题明明是又一次写了遍hdu2222! ) 这题说实话第一眼看上去就是个sb题,仅仅要建出来自己主动机. ...
- Material Designer的低版本兼容实现(六)—— Ripple Layout
新版的Android5.0添加了涟漪效果,虽然开源的库提供了各种控件便于大家使用涟漪效果.但是仍旧不可能满足所有需求,因此我今天改出来一个类叫做,LayoutRipple,其实感觉跟应该叫Ripple ...
- MYSQL中group_concat有长度限制!默认1024(转载)
在mysql中,有个函数叫“group_concat”,平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了,其实MYSQL内部对这个是有设置的,默认不设置的长度是1024,如果我们需要更 ...
- mysql权限管理命令示例
mysql权限管理命令示例 grant all privileges on *.* to *.* identified by 'hwalk1'; flush privileges; insert in ...
- JavaScript:String 对象
ylbtech-JavaScript:String 对象 1.返回顶部 String 对象 String 对象用于处理文本(字符串). 创建 String 对象的语法: new String(s); ...
- Team Foundation(通常记作“TFS”)
ylbtech-Miscellaneos:Team Foundation(通常记作“TFS”) Team Foundation是一个服务平台,为 Microsoft 提供源代码管理数据收集报告等工作. ...
- USB线插拔检测使用UEventObserver检测uevent事件的分析
说实话这玩样儿的代码量真的很少,大家如果能耐得住性子啃一会儿也就能撸懂了. 在这之前研究USB线插拔的时候就知道了有这么个东西,当时也就看了看,但没做什么笔记.最近想用起来,却发现就只有个名字在记忆中 ...
- WHY数学图形显示工具
软件功能:输入一个二元数学表达式,含有两个参数变量X和Y,显示该数学表达式的三维图形. 很久之前就有写这个软件的想法,却一直没有激情和动力,终于在年假这两天完成了.以此软件纪念我那十几年前的高中生活, ...
- 在bat中执行sql,并配置windows计划任务,并隐藏命令窗口 (转)
1.创建一个sql文件,test.sql: INSERT INTO TR_HK_RC_TEMPERATURE2 (HWINSTANCEID, KPIITEMID, BRANCHID, COLLECTT ...
- Reboot server stuck at “Press ESC in 1 seconds to skip startup.nsh”
I have a Cisco C240 server, and everytime after reboot, it will got stuck at screen like below. To r ...