(高分求教!)SQL Server是否可以把一个表的结构和数据一起dump出来?急!

sjmblue 2004-06-22 03:32:04
最好能如同mysqldump的功能那样,可以把库表的结构和数据一起dump出来,以sql语句存储,便于数据的移植!

我的目的就是想把一个表的结构和数据一起dump出来,然后移到另一个机器的库中,哪位大侠有好办法!多谢多谢!
...全文
63 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-06-22
  • 打赏
  • 举报
回复
--生成数据脚本也可以自己写存储过程:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_sql]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_sql]
GO

/*--生成表数据脚本的通用存储过程,

功能:将指定表的数据内容生成脚本结果集
解决了字段多时,用单个变量生成的字符串超长的问题
注意,生成的是一个表结果集
--邹建 2004.5--*/

/*--调用示例

exec p_sql 'sysobjects'
--*/
create proc p_sql
@tbname sysname --要处理的表名
as
declare @sqlhead nvarchar(4000),@sqlend nvarchar(4000)
,@sql1 nvarchar(4000),@sql2 nvarchar(4000),@sql3 nvarchar(4000)
,@sql41 nvarchar(4000),@sql42 nvarchar(4000)
,@i int,@ic varchar(20)

set nocount on

--生成处理临时表
select id=identity(int,1,1),gid=0
,fdname,sv=case
when type like '%int' or type like '%money'
or type in('float','real','decimal','numeric')
then 'case when '+fdname+' is null then ''NULL'' else convert(varchar,'+fdname+') end'
when type like '%datetime' or type like '%binary'
or type in('timestamp','uniqueidentifier')
then 'case when '+fdname+' is null then ''NULL'' else ''''''''+replace(convert(varchar,'+fdname+'),'''''''','''''''''''')+'''''''' end'
else 'case when '+fdname+' is null then ''NULL'' else ''''''''+replace('+fdname+','''''''','''''''''''')+'''''''' end'
end
into # from(
select fdname='['+replace(a.name,']',']]')+']'
,type=b.name,a.colid
from syscolumns a
join systypes b on a.xtype=b.xtype
where b.name not in('image','ntext','text','sql_variant') --不能处理的类型
and id=object_id(@tbname)
)a order by colid

if @@rowcount=0 return --如果没有满足条件的数据,退出

--判断需要多少个变量来处理
select @i=max(len(sv)) from #
set @i=3800/@i

--分组临时表
update # set gid=id/@i
select @i=max(gid) from #

--生成数据处理语句
select @sql1='',@sql2='',@sql3='',@sql41='',@sql42=''

while @i>=0
select @ic=cast(@i as varchar),@i=@i-1
,@sql1='@a'+@ic+' nvarchar(4000),@b'+@ic+' nvarchar(4000),'+@sql1
,@sql2='@a'+@ic+'='''',@b'+@ic+'='''','+@sql2
,@sql3='select @a'+@ic+'=@a'+@ic+'+'',''+fdname,@b'
+@ic+'=@b'+@ic+'+''+'''',''''+''+sv from # where gid='+@ic+char(13)+@sql3
,@sql41='+@a'+@ic+@sql41
,@sql42='+@b'+@ic+@sql42

select @sql1=left(@sql1,len(@sql1)-1)
,@sql2=left(@sql2,len(@sql2)-1)
,@sql3=left(@sql3,len(@sql3)-1)
,@sql41=substring(@sql41,2,4000)
,@sql42=substring(@sql42,2,4000)
,@tbname='['+replace(@tbname,']',']]')+']'

exec('
declare '+@sql1+'
select '+@sql2+'
'+@sql3+'
select @a0=stuff(@a0,1,1,''''),@b0=stuff(@b0,1,5,'''')
exec(''select ''''insert '+@tbname+'(''+'+@sql41+'+'')
values(''''+''+'+@sql42+'+''+'''')''''
from '+@tbname+''')
')
go

zjcxc 元老 2004-06-22
  • 打赏
  • 举报
回复

生成数据库脚本:
sql200企业管理器
--右键要导出的数据库
--所有任务
--生成SQL脚本
--<常规>里选择"生成全部对象脚本"","在脚本文件中包含说明性标题"选上
--<设置格式>里,将"包含扩展属性",选上
--<选项>中,将"表脚本选项"中的内容全部选择上
--<选项>中,"安全性选项"是决定是否要包含创建数据库及用户权限等的设置,根据你的需要选择
--其他所有的选项保持默认值
--然后确定,将其保存成一个.sql文件

生成数据脚本(借用第三方工具):
SQL Server 数据库SQL脚本导出器1.0
(下载地址:http://www.csdn.net/cnshare/soft/19/19892.shtm)
(1) 支持所有数据类型(如binary,text,image)
(2) 支持表结构、索引、所有记录到SQL脚本
(3) 支持数据库、表的浏览
(4) SQL语句的编辑、执行
(5) 可备份数据库、表结构、记录
sjmblue 2004-06-22
  • 打赏
  • 举报
回复
能否详细说说
yesyesyes 2004-06-22
  • 打赏
  • 举报
回复
好象log explorer行

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧