转自:http://www.cnblogs.com/cheatlove/archive/2007/08/23/867427.html
CREATE PROCEDURE dbo.UspOutputData
@tablename sysname
AS
declare @column varchar(1000)
declare @columndata varchar(1000)
declare @sql varchar(4000)
declare @xtype tinyint
declare @name sysname
declare @objectId int
declare @objectname sysname
declare @ident int
set nocount on
set @objectId=object_id(@tablename)
if @objectId is null -- 判斷對象是否存在
begin
print 'The object not exists'
return
end
set @objectname=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
print 'SET IDENTITY_INSERT '+@TableName+' ON'
declare syscolumns_cursor cursor
for select c.name,c.xtype from syscolumns c
where c.id=@objectid
order by c.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(231,239) then '''N''''''+'+@name+'+''''''''' --nvarchar,nchar
when @xtype=61 then '''''''''+convert(char(23),'+@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
end
end
fetch next from syscolumns_cursor into @name,@xtype
end
close syscolumns_cursor
deallocate syscolumns_cursor
set @sql='set nocount on select ''insert '+@tablename+'('+@column+') values(''as ''--'','+@columndata+','')'' from '+@tablename
print '--'+@sql
exec(@sql)
if @ident is not null
print 'SET IDENTITY_INSERT '+@TableName+' OFF'
GO
执行方法是: exec UspOutputData 你的表名
得到导出数据的语句,但image,text,ntext,sql_variant 列不出现在语句,以后改进。
分享到:
相关推荐
SQL Server 中存储过程比直接运行 SQL 语句慢的原因 在 SQL Server 中,存储过程比直接运行 SQL 语句慢的原因是 Parameter sniffing 问题。Parameter sniffing 是指 SQL Server 在执行存储过程时,使用参数的统计...
要排除自增列并处理非固定数据类型,你可以编写一个存储过程,生成动态的INSERT语句。首先,你需要获取表结构,然后构造INSERT语句,避开自增列。例如: ```sql DECLARE @sql NVARCHAR(MAX) = '' SELECT @sql +...
本话题聚焦于如何将SQL Server中的用户表数据导出为Insert语句,这通常用于数据迁移、备份或者测试环境的数据填充。下面我们将详细讨论这个过程以及涉及的相关技术。 1. **SQL Server数据库**:SQL Server是由微软...
总的来说,`spGenInsertSQL`存储过程提供了一种方便的方式来动态生成INSERT语句,帮助用户快速地在不同的SQL Server数据库间复制数据。然而,为了确保数据的完整性和一致性,使用前应仔细检查生成的SQL语句,并在...
在SQL Server 2008中,可以通过图形化工具(如SQL Server Management Studio,简称SSMS)来创建、修改和管理存储过程和触发器,也可以使用T-SQL脚本来进行操作。 对于存储过程,我们可以创建参数化的存储过程以实现...
以上内容主要介绍了 SQL Server 中存储过程中的一些基本语法和操作方法,包括变量定义及赋值、表和临时表的操作、循环以及条件语句等,这些知识点对于理解和使用 SQL Server 存储过程至关重要。
导出sql server表数据(生成以insert插入的语句方式的存储过程)
### SQL Server 存储过程实现表数据导出为 INSERT 语句 在 SQL Server 数据库管理系统中,有时候我们需要将表中的数据导出成一系列的 INSERT 语句,这对于备份、恢复或者迁移数据非常有用。本篇文章详细介绍了一个...
(包含insert语句。结果可一键执行,利于数据导出、导入) 参数: @tableName nvarchar(100) --表名 ,@sqlWhere nvarchar(500) --where条件,如'a=''123'' '(传空时,导出全表数据) 不足: 不支持binary,image等...
综上,SQL Server的存储过程和触发器是数据库编程的重要组成部分,掌握它们的使用可以帮助我们更高效地管理和维护数据库。通过做相关的习题,不仅可以巩固理论知识,还能提升实际操作技能。对于初学者而言,从基础...
根据提供的文件信息,我们可以构建一个详细的SQL Server存储过程来实现将表中的数据转换为`INSERT INTO`脚本的功能。此存储过程将适用于多种数据类型,并能够动态生成插入语句,以便用户可以方便地导出数据作为脚本...
用户自定义存储过程则是由开发人员根据需求创建,可以包含一系列的T-SQL语句,如SELECT、INSERT、UPDATE、DELETE等。 1. **创建存储过程**:使用CREATE PROCEDURE语句创建存储过程,定义输入参数、输出参数或两者兼...
在SQL Server中,存储过程是预编译的SQL语句集合,它们封装了特定的数据库操作,提高了代码的重用性和执行效率。当涉及到处理多个值时,我们常常会遇到如何将这些值作为参数传递给存储过程的问题。本文将探讨在SQL ...
### 解密SQL Server 2000存储过程详解 #### 一、背景介绍 在数据库管理系统(DBMS)中,存储过程是一种预先编译好的SQL语句集合,它被保存在数据库服务器上,并且可以像调用普通函数一样被应用程序所调用。这种机制...
根据提供的信息,我们可以详细解析如何创建一个SQL Server的存储过程,该存储过程的功能是将指定表中的数据转换为INSERT语句。这对于数据备份、迁移或重构数据库时非常有用。 ### 存储过程名称:dataToSQLScript ...
sqlserver的存储过程批量生成insert插入语句 在需要批量导入数据或者保留数据的情况下使用
在本例中,使用了 JDBC 来连接到 SQL Server 数据库,调用 `InsertUser` 存储过程。 6. 存储过程的优点 存储过程有很多优点,例如可以提高数据库的安全性、简化数据库的维护、提高数据的_consistency 等。在本例...
SQL Server 存储过程是一种预编译的SQL脚本,可以提高SQL语句的执行效率并简化复杂的数据库操作。存储过程能够实现对数据库的安全访问,并支持参数化查询,增强应用程序与数据库之间的交互。 #### 二、创建与删除...
以下是关于SQL Server存储过程的详细说明: 1. **存储过程的概念** 存储过程Procedure是一系列SQL语句的集合,它们在数据库中以编译好的形式存储,当需要执行时,只需要调用存储过程的名称并传入相应的参数。存储...