`
michael1990
  • 浏览: 14756 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程)

 
阅读更多

 

通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没有insert into。

因为SQL Server并不包含这个功能,只能靠第三方的代码了。

以下存储过程可以实现:

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=rtrim(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 你的表名

选择【执行模式】为“以文本显示结果”,然后将运行后的结果存成.sql,加上用SQL Server生成的数据库脚本就可以了。

另外可以利用第三方工具,导出数据可以用powerbuilder。在database painter里面,用SQL选出,或者直接打开表,点击生成的list datawindow,然后在菜单file->save rows as->选择SQL,那么生成的SQL语句就包括建表和insert数据的SQL了。
 

转自:http://www.cnblogs.com/yukui/archive/2009/11/12/1601619.html

 

注意:这样导出的Insert语句,会将表里面设置的自增长的主键列也会导出来,这样的插入语句,执行会报错的,所以请手动删除这些主键列和对应的数据。

 

分享到:
评论

相关推荐

    Sql Server导出数据 INSERT 脚本

    可以将数据库中的数据导出insert into脚本, sql server2008以上版本已经自带导出数据库数据成insert脚本功能,该工具针对2005以下版本.使用时先选择数据库服务器地址,在右侧选择Sql Server login,输入数据库账号...

    sqlserver表数据生成insertsql脚本(导出成insertsql脚本).pdf

    SQL Server是一种强大的关系数据库管理系统,提供了多种方式来生成INSERT SQL脚本,以便将数据导出到其他数据库或系统中。在本文中,我们将介绍如何使用SQL Server 2008中文版生成INSERT SQL脚本。 生成INSERT SQL...

    SQL SERVER:把表里的数据导出成为INSERT INTO脚本的存储过程

    根据提供的文件信息,我们可以构建一个详细的SQL Server存储过程来实现将表中的数据转换为`INSERT INTO`脚本的功能。此存储过程将适用于多种数据类型,并能够动态生成插入语句,以便用户可以方便地导出数据作为脚本...

    SQLServer导出为Insert语句

    在SQL Server中,可以使用多种工具或T-SQL语句来导出数据,例如`bcp`命令行工具,`SELECT INTO`语句,或者使用SSMS(SQL Server Management Studio)的“任务”&gt;“生成脚本”功能。 4. **Insert语句**:在SQL中,...

    SQL Server 脚本导出器

    通过使用SQL Server 脚本导出器,你可以轻松地将整个数据库或特定的表的结构和数据转换为SQL脚本,这在数据库的备份、恢复、复制或迁移场景中非常有用。 "数据信息变成Sql插入语句"是该工具的核心特性。SQL插入语句...

    SQL 导出数据 insert 语句

    在SQL Server中,虽然没有直接的内置功能来批量生成INSERT语句,但可以通过SQL查询或其他工具(如SQL Server Management Studio - SSMS)配合T-SQL脚本来实现这一目标。 例如,你可以编写一个存储过程或者使用SSMS...

    SQL Server将数据导出SQL脚本的方法

    通常,SQL Server Management Studio (SSMS) 提供的功能仅能导出数据库架构,包括表结构、索引、视图、存储过程等,但不直接包含数据。要导出数据表的内容,确实需要手动编写SQL语句或者使用特定的存储过程。本文将...

    SQLServer数据库表中数据导出成SQL语句工具

    除了这个特定的MHT格式工具,SQL Server还提供了其他的内置功能和第三方软件,例如SQL Server Management Studio(SSMS)的“任务”-&gt;“生成脚本”,或者使用bcp命令行工具,它们也可以完成类似的数据导出工作。...

    Sqlserver2005 本地导出数据到远程实例

    在SQL Server 2005中,将本地数据库的数据导出到远程实例是一项常见的操作,特别是在数据迁移、备份恢复或跨环境同步时。这个过程涉及多个步骤和技术,下面将详细介绍如何实现这一目标。 首先,我们需要了解SQL ...

    SQL SERVER脚本表结构和数据导出工具

    这将生成一个SQL脚本文件,包含了创建该表的DDL(Data Definition Language)语句。 - T-SQL命令:可以使用`sp_helptext`系统存储过程查看表的定义,但此方法通常用于查看,不便于导出。 2. **导出数据:** - ...

    SQL Server中导入导出数据三方法比较

    DTS包可以设计为包含一系列数据流任务,包括数据清洗、转换、验证等,使得数据导入导出过程更为灵活和可控。当需要进行高级的数据处理,如数据验证、转换或清洗时,DTS是最佳选项。 综上所述,选择哪种方法取决于...

    DB2数据库自动导出数据INSERT SQL脚本工具

    INSERT SQL脚本通常包含一系列的INSERT INTO语句,每条语句用于向指定表中插入一行数据。通过这种方式,数据可以从一个数据库完整地迁移到另一个数据库,或者进行数据备份和恢复。 在使用这个工具时,首先你需要...

    数据导出为Insert 脚本

    在MS SQL SERVER中,导出数据为Insert脚本通常是为了备份数据、迁移数据或者在测试环境中重现生产环境的数据状态。这个过程可以通过SQL Server Management Studio (SSMS) 来实现: 1. 打开SSMS,连接到你的SQL ...

    SQL SERVER 将select数据生成insert语句

    它是一个实用的辅助程序,能够自动生成`INSERT INTO`语句,帮助用户将数据从一个表导出为可执行的SQL脚本。这个工具可能包含以下功能: 1. **选择表**:用户可以选择要导出数据的特定表。 2. **指定列**:允许用户...

    把msSqlServer 中的数据导出成 insert into语句

    综上所述,存储过程`dbo.UspOutputData`提供了一种灵活且强大的方法,用于将MS SQL Server中的数据导出为SQL插入语句,极大地简化了数据迁移和脚本化工作流程。然而,使用时也应充分考虑其局限性和潜在风险,采取...

    SQL SERVER 表数据导出脚本

    根据提供的文件信息,我们可以深入分析并提取出与“SQL Server 表数据导出脚本”相关的几个关键知识点。 ### 知识点一:SQL Server 存储过程的创建与删除 在给定的部分内容中,首先出现的是一个存储过程的创建逻辑...

    sqlserver 数据导出语法工具

    综上所述,SQL Server提供了多种方式来导出数据,包括Transact-SQL语句、内置工具(如SSMS、BCP)和集成服务。"SqlDataToScript.exe" 可能是专门针对脚本导出的一种解决方案,适用于需要数据脚本化处理的场景。了解...

    SQL定时导出数据到Excel

    ### SQL Server 定时导出数据到Excel及其他格式 #### 概述 在数据库管理和维护过程中,有时我们需要定期将数据库中的数据导出为其他格式,如Excel、Word或Access等,便于进一步的数据分析或者报告制作。本文将详细...

    sql server导出成sql语句

    总之,虽然SQL Server没有直接的“导出为INSERT INTO”功能,但通过编写存储过程或使用其他工具,我们可以实现类似的功能,满足数据复制或迁移的需求。不过,根据实际场景选择合适的工具和方法是非常重要的,以确保...

    sqlserver 数据库导出excel

    为了能够使用 OPENROWSET 或 BCP 导出数据至 Excel 文件,需要对 SQL Server 的一些配置参数进行设置。 **具体步骤:** - **启用 Ad Hoc Distributed Queries:** ```sql EXEC sp_configure '...

Global site tag (gtag.js) - Google Analytics