导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

怎样单独备份一个含image字段的TABLE?

trouble 2003-12-20 07:57:32
一个含image字段的TABLE,我要DROP掉,然后还要CREAT回来。

想DROP前先备份该TABLE里面的资料,以后再恢复回来。请问怎么做?

注:1、只单独备份一个TABLE。备份整个数据库的方法不算。
2、最好用SQL语句实现。
...全文
6 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cgsun 2003-12-20
文件备份
回复
利用上面的存储过程,将数据导出到指定的表,导出到指定的文本文件中.

复制此文本文件到你的电脑,再利用上面的存储过程导入就行了.


--下面是测试

--创建导入/导出的存储过程
/*--实现数据导入/导出的存储过程

可以实现导入/导出 指定表 到文本文件

邹建 2003.07-----------------*/

/*--调用示例
导出调用示例
--导出指定表,这里指定导出表:地区资料
exec file2table 'zj','','','c:\zj.txt','xzkh_new..地区资料'

导入调用示例
--导入指定表,这里指定导入表:地区资料
exec file2table 'zj','','','c:\zj.txt','xzkh_sa..地区资料',0
--*/

if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1)
drop procedure File2Table
go

create procedure File2Table
@servername varchar(200) --服务器名
,@username varchar(200) --用户名,如果用NT验证方式,则为空''
,@password varchar(200) --密码
,@filename varchar(1000) --目录名+文件名
,@tbname varchar(500)='' --数据库..表名
,@isout bit=1 --1为导出(默认),0为导入
as
declare @sql varchar(8000)

set @sql='bcp "'+@tbname
+case when @isout=1 then '" out' else '" in' end
+' "'+@filename+'" /c' +' /S"'+@servername
+case when isnull(@username,'')='' then ''
else '" /U"'+@username end
+'" /P"'+isnull(@password,'')+'"'
exec master..xp_cmdshell @sql
go

--创建测试的表
create table tb(img image)
insert into tb values(0x12312321)
go

--调用上面的存储过程导出
exec file2table 'zj','','','c:\zj.txt','客户资料..tb'
go

--清除表
truncate table tb
go

--导入
exec file2table 'zj','','','c:\zj.txt','客户资料..tb',0
go

--显示结果
select * from tb

go

--删除测试测试
drop table tb
drop proc file2table
回复
/*--实现数据导入/导出的存储过程

可以实现导入/导出 指定表 到文本文件

邹建 2003.07-----------------*/

/*--调用示例
导出调用示例
--导出指定表,这里指定导出表:地区资料
exec file2table 'zj','','','c:\zj.txt','xzkh_new..地区资料'

导入调用示例
--导入指定表,这里指定导入表:地区资料
exec file2table 'zj','','','c:\zj.txt','xzkh_sa..地区资料',0
--*/

if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1)
drop procedure File2Table
go

create procedure File2Table
@servername varchar(200) --服务器名
,@username varchar(200) --用户名,如果用NT验证方式,则为空''
,@password varchar(200) --密码
,@filename varchar(1000) --目录名+文件名
,@tbname varchar(500)='' --数据库..表名
,@isout bit=1 --1为导出(默认),0为导入
as
declare @sql varchar(8000)

set @sql='bcp "'+@tbname
+case when @isout=1 then '" out' else '" in' end
+' "'+@filename+'" /c' +' /S"'+@servername
+case when isnull(@username,'')='' then ''
else '" /U"'+@username end
+'" /P"'+isnull(@password,'')+'"'
exec master..xp_cmdshell @sql
go
回复
trouble 2003-12-20
先谢谢以上两位!

还想请教一下,除了这种方法。还有其它方法吗?

比如:我要从分公司的数据库里导入数据到我这里来(光盘、U盘)份整个数据库的方法,
而只要这个TABLE里的数据就可以了。可以做到吗?

回复
txlicenhe 2003-12-20
eg:
use northwind
go

select * into #tmp from employees

insert employees (lastName,firstname,photo)
select lastName,firstname,photo from #tmp
回复
wzh1215 2003-12-20
你可以备份这个表到该库下或别的数据库中。然后把该表删除,以后要只要从另一个备份表中把数据还原回来即可:
select * into aaa from [table]
回复
yoki 2003-12-20
你可以将这个表导入到access文件中
然后需要的时候在用access文件将这个表导回去
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告