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
SQL 导出表数据存储过程的更多相关文章
- SQL server 数据存储过程
创建视图
- Oracle导出表数据与导入表数据dmp,以及导入导出时候常见错误
使用DOS 操作界面导出表数据,导入表数据(需要在数据库所在的服务器上边执行) exp UserName/Password@192.168.0.141/orcl file=d:\xtables.d ...
- PL/SQL DEVELOPER 导出表数据
http://jingyan.baidu.com/album/fcb5aff78e6a48edab4a7146.html?picindex=4 1. 导出表数据 打开pl/sql客户端 在左侧 点击t ...
- SQL Server 数据备份存储过程
原文:SQL Server 数据备份存储过程 今天开园,分享一下我一直在使用的数据备份存储过程,欢迎转载!!! ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- 在易语言中调用MS SQL SERVER数据库存储过程方法总结
Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...
- 总结一些关于操作数据库是sql语句还是存储过程问题
总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...
- SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过
SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过 存储过程 创建存储过程 use pubs --pubs为数据库 go create proc ...
- SQL server数据缓存依赖
SQL server数据缓存依赖有两种实现模式,轮询模式,通知模式. 1 轮询模式实现步骤 此模式需要SQL SERVER 7.0/2000/2005版本以上版本都支持 主要包含以下几 ...
- SQL Server中存储过程 比 直接运行SQL语句慢的原因
问题是存储过程的Parameter sniffing 在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1. 存储过程只在创造时进行编译即可,以后每次执行存储过 ...
随机推荐
- CSS——tab导航demo
问题总结: 1.ul要比外套div宽度的值大一点 2.ul需要往左移动1px 3.外套的div设置overflow隐藏 解决抖动: 1.li宽度设置98px,padding左右值1px,hover之后 ...
- [Windows Server 2012] 服务器安全加固
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:服务器安全加固 ...
- JSP学习笔记 - 内置对象 Request
1.主要掌握以下5个内置对象及其所属类,必须学会在java docs里根据类名查找相应的方法 request javax.servlet.http.HttpServletRequest res ...
- windows下使用批处理设置环境变量
1. 设置临时环境变量 set BAT_HOME=c:\bat 此命令只对当前窗口有效,批处理或cmd窗口一关闭,变量就恢复原来的值了. 2. 设置永久环境变量 方法一 setx BAT_HOME C ...
- .net 内嵌 GeckoWebBrowser (firefox) 核心浏览器
引用nuget包: 注意:Geckofx45 nuget包必须是最后引用,否则初始化会出错 简单示例: using Gecko; using System; using System.Collecti ...
- 初学者怎么才能快速学会Python?
提起对Python的印象,除了全能之外恐怕就是简单易学了.很多人都在推荐新手学Python入门,毕竟语法简单.语句简洁,所谓“人生苦短我用Python”绝不是一句空话.不过也不能忽视一点:Python ...
- jquery动态生成二维码添加自定义logo
动态生成二维码中间带logo. jquery.qrcode.js 动态生成二维码api很简单. 引入jquer(版本任意),引入jquery.qrcode.js 不需要中间带logo这样就可以了.带l ...
- 本地文件与服务器文件同步shell脚本
为何创建此脚本是因为方便项目的布署,不需要手动地去同步不同的项目,而只需要简单的执行shell脚本,输入项目名就能发布到服器上. 1.shell文件代码 #!/bin/sh read -t 30 -p ...
- 刽子手游戏(Hangman Judge, UVa 489)
刽子手游戏其实是一款猜单词游戏,游戏规则是这样的:计算机想一个单词让你猜,你每次可以猜一个字母.如果单词里有那个字母,所有该字母会显示出来:如果没有那个字母,则计算机会在一幅“刽子手”画上填一笔.这幅 ...
- 【codeforces 509E】Pretty Song
[题目链接]:http://codeforces.com/contest/509/problem/E [题意] 让你计算一个字符串的所有子串里面元音字母出现的频率的和; [题解] 先处理出前缀和-&g ...