oracle数据库导出,如何不导出Blob字段内容

lizhe1984 2009-02-18 11:51:33
我的数据库blob字段主要是用于存放图片,对我的意义不大,由于Blob字段内容太多,所占空间太大,我想导出数据库中不导blob字段的内容,或者说不导出它所在的空间,如何操作啊,我的数据库是Oracle9i的,谢谢!
...全文
1714 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kutulu 2010-02-24
  • 打赏
  • 举报
回复
首先在user_column 那个表里把列类型是blob的表名都提取出来,然后汇聚在一起,是在不行就把表名复制出来用ue列编辑好了

呃。。。好久没碰数据库了,不晓得上面的那个user表写的对不对。。。。
x_lvyonggang 2010-02-23
  • 打赏
  • 举报
回复
to zcs_1
我必须导出BLOG
snyy20 2009-03-17
  • 打赏
  • 举报
回复
楼主可以用不同版本的ORACLE客户端和服务端试试;也就是说:

用9I.0.1版本的客户端去连9I.1.1版本的服务端,反正就是将客户端和服务端的版本不一致就行;

这样导出来的数据库只要有BLOB和CLOB的字段的表都会导不出来.正好符合你的需求!哈哈……
ABNORMAL1982 2009-03-05
  • 打赏
  • 举报
回复
这个确实比较麻烦
1、用create table 的方式是可以,但是这个方式的表空间和索引好像会丢失
2、处理上比较麻烦:要用bat文件 调用exp imp sqlplusw 命令
如果直接exp imp 好像没有直接达到效果,这个还是有难度的题目
rexyudl 2009-03-05
  • 打赏
  • 举报
回复
不好意思,EXP是可以导入导出BLOB的
rexyudl 2009-03-05
  • 打赏
  • 举报
回复
exp 导出数据本身就无法导出BLOB字段.
xuehong520 2009-03-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zcs_1 的回复:]
用表模式不知道是否符合你的要求,把不包括blob的表列出来,对于包括blob的表,可以用
create table a as select..
的方式创建一个表,把blob置换为empty_blob()
然后导出不包括blob的表

导出命令为:
exp username/passwd file=myfile.dmp log=myfile.log tables=table1,table2,...,tablen
[/Quote]

我也是这么想的
zcs_1 2009-02-21
  • 打赏
  • 举报
回复
我建议楼主用参数文件,把所有的参数放到这个文件中,如:
exp spfile=myspfile.txt

其中myspfile.txt的内容为

userid=scott/tiger
file=myexp.dmp
log=myexp.log
tables=table1,
table2,
table3,
table4,
...
tablen

其中tables参数部分可以用SQLPLUS得到,在sqlplus下,执行

SQL>SELECT table_name||',' from user_tables where table_name not in(select table_name from user_lobs);

注意对得到的结果要进行编辑,去掉最后的逗号
zcs_1 2009-02-21
  • 打赏
  • 举报
回复
Oracle也注意到这个问题,在Oracle10g中给数据泵(data pump)加上了EXCLUDE参数,可以反选,但是在exp和imp命令上就没有长劲,估计以后要把exp和imp取消用expdp和impdp代替了
eviler 2009-02-20
  • 打赏
  • 举报
回复
让你写上这些表也是不现实的 ,但是你可以使用plsql 把需要导出的表拼成一个字符串
然后使用 exp username/passwd file=myfile.dmp log=myfile.log tables=table1,table2,...,tablen ,直接粘帖过去
lizhe1984 2009-02-20
  • 打赏
  • 举报
回复
谢谢zcs_1 ,这也是一个可行的方法

但是我的库表特别多,有一、二百个呢,要是用tables=去列出来的话太麻烦了,有没有反选的方法,呵呵,就是列几个表在那,导出没有列出的表呢?
或是还有其它更简捷的方法吗?

谢谢!
zcs_1 2009-02-19
  • 打赏
  • 举报
回复
用表模式不知道是否符合你的要求,把不包括blob的表列出来,对于包括blob的表,可以用
create table a as select..
的方式创建一个表,把blob置换为empty_blob()
然后导出不包括blob的表

导出命令为:
exp username/passwd file=myfile.dmp log=myfile.log tables=table1,table2,...,tablen
lizhe1984 2009-02-19
  • 打赏
  • 举报
回复
我的意思就是不想导出blob那部分,有那部分文件太大,请问如何导出?
dawugui 2009-02-18
  • 打赏
  • 举报
回复
好象这是oracle的一个问题所在,导不出来.

友情帮顶.
zcs_1 2009-02-18
  • 打赏
  • 举报
回复
无法直接实现,只能分开导出

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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