二:通常情况下,sql Server里面的生成sql脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是sql脚本里面只有Create database,Create table 这样的语句,没有insert into。
因为sql Server并不包含这个功能,只能靠第三方的代码了。
以下存储过程可以实现:
CREATE
PROCEDURE
dbo.UspoutputData
@tablename sysname
AS
declare @column varchar ( 1000 )
@columndata @sql 4000 @xtype tinyint @name @objectId int @objectname @ident
set nocount on @objectId = object_id ( )
if is null -- 判断对象是否存在
begin print ' The object not exists ' return end @objectname rtrim ( object_name ))
or charindex , ) = 0 此判断不严密 object not in current database OBJECTPROPERTY IsTable ) < > 1 判断对象是否是table The object is not table select @ident = status & 0x80 from syscolumns where id @objectid and status 0x80 not SET IDENTITY_INSERT ' + @TableName + ON syscolumns_cursor cursor for c.name,c.xtype syscolumns c c.id order by c.colid
open syscolumns_cursor
@column '' @columndata fetch next into while @@fetch_status >- 2 in 189 34 35 99 98 ) timestamp不需处理,image,text,ntext,sql_variant 暂时不处理
case when len then else end then ''
167 175 ''''''''' + @name ''''''''' varchar,char 231 239 ''' N '''''' nvarchar,nchar @xtype 61 +convert(char(23),121)+ datetime 58 +convert(char(16),120)+ smalldatetime 36 +convert(char(36),0)">)+ uniqueidentifier close deallocate syscolumns_cursor
@sql set nocount on select insert @tablename ) values( as -- ) from exec OFF GO
@tablename sysname
AS
declare @column varchar ( 1000 )
@columndata @sql 4000 @xtype tinyint @name @objectId int @objectname @ident
set nocount on @objectId = object_id ( )
if is null -- 判断对象是否存在
begin print ' The object not exists ' return end @objectname rtrim ( object_name ))
or charindex , ) = 0 此判断不严密 object not in current database OBJECTPROPERTY IsTable ) < > 1 判断对象是否是table The object is not table select @ident = status & 0x80 from syscolumns where id @objectid and status 0x80 not SET IDENTITY_INSERT ' + @TableName + ON syscolumns_cursor cursor for c.name,c.xtype syscolumns c c.id order by c.colid
open syscolumns_cursor
@column '' @columndata fetch next into while @@fetch_status >- 2 in 189 34 35 99 98 ) timestamp不需处理,image,text,ntext,sql_variant 暂时不处理
case when len then else end then ''
167 175 ''''''''' + @name ''''''''' varchar,char 231 239 ''' N '''''' nvarchar,nchar @xtype 61 +convert(char(23),121)+ datetime 58 +convert(char(16),120)+ smalldatetime 36 +convert(char(36),0)">)+ uniqueidentifier close deallocate syscolumns_cursor
@sql set nocount on select insert @tablename ) values( as -- ) from exec OFF GO
使用方法:
exec UspoutputData 你的表名
选择【执行模式】为“以文本显示结果”,然后将运行后的结果存成.sql,加上用sql Server生成的数据库脚本就可以了。
另外可以利用第三方工具,导出数据可以用powerbuilder。在database painter里面,用sql选出,或者直接打开表,点击生成的list datawindow,然后在菜单file->save rows as->选择sql,那么生成的sql语句就包括建表和insert数据的sql了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。