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

  

SQL 导出表数据存储过程的更多相关文章

  1. SQL server 数据存储过程

    创建视图

  2. Oracle导出表数据与导入表数据dmp,以及导入导出时候常见错误

    使用DOS 操作界面导出表数据,导入表数据(需要在数据库所在的服务器上边执行) exp UserName/Password@192.168.0.141/orcl   file=d:\xtables.d ...

  3. PL/SQL DEVELOPER 导出表数据

    http://jingyan.baidu.com/album/fcb5aff78e6a48edab4a7146.html?picindex=4 1. 导出表数据 打开pl/sql客户端 在左侧 点击t ...

  4. SQL Server 数据备份存储过程

    原文:SQL Server 数据备份存储过程 今天开园,分享一下我一直在使用的数据备份存储过程,欢迎转载!!! ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  5. 在易语言中调用MS SQL SERVER数据库存储过程方法总结

    Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...

  6. 总结一些关于操作数据库是sql语句还是存储过程问题

    总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...

  7. SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过

    SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过     存储过程 创建存储过程 use pubs --pubs为数据库 go create proc ...

  8. SQL server数据缓存依赖

    SQL server数据缓存依赖有两种实现模式,轮询模式,通知模式. 1  轮询模式实现步骤 此模式需要SQL SERVER 7.0/2000/2005版本以上版本都支持        主要包含以下几 ...

  9. SQL Server中存储过程 比 直接运行SQL语句慢的原因

    问题是存储过程的Parameter sniffing     在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1. 存储过程只在创造时进行编译即可,以后每次执行存储过 ...

随机推荐

  1. 挂载硬盘,提示 mount: unknown filesystem type 'LVM2_member'的解决方案

    问题现象:由于重装linux,并且加了固态硬盘,直接将系统装在固态硬盘中.启动服务器的时候, 便看不到原来机械硬盘的挂载目录了,不知如何访问机械硬盘了.直接用命令 mount /dev/sda3 /s ...

  2. JS——标记

    continue 语句(带有或不带标签引用)只能用在循环中.break 语句(不带标签引用),只能用在循环或 switch 中.通过标签引用,break 语句可用于跳出任何 JavaScript 代码 ...

  3. [Windows Server 2008] 安装PHP+MySQL方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:PHP+MyS ...

  4. Redis 之仿微博demo

    一.用户注册登录 include './header.php'; include './function.php'; $username = p('username'); $password = p( ...

  5. ES6 箭头函数this指向问题

    var name = "window"; var person1 = { name: "person1", show1: function() { consol ...

  6. c# 图片资料

  7. 小程序map地图多点定位

    最近需求有一个类似共享单车查看附近单车的功能,看了看小程序map api对多点定位显示描述的不怎么清晰.显示定位数组添加多个时就不显示了.踩了几个坑写了几个方法.最终弄出来了.有问题建议欢迎留言. h ...

  8. Xpath语法与lxml库

    1. Xpath 1 )什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. 2) X ...

  9. swift 再识枚举变量

    // Use enum to create an enumeration. Like classes and all other named types, enumerations can have ...

  10. 【解题报告】 洛谷 P3492 [POI2009]TAB-Arrays

    [解题报告] 洛谷 P3492 [POI2009]TAB-Arrays 这题是我随机跳题的时候跳到的.写完这道题之后,顺便看了一下题解,发现只有一篇题解,所以就在这里顺便写一个解题报告了. 首先当然是 ...