我的导出文件中缺少Oracle,Blob数据

时间:2014-04-02 09:37:02

标签: oracle oracle11g oracle-sqldeveloper data-export

我使用Oracle 11g,我试图导出我的数据(只有数据,而不是表创建脚本等) 所以它可以由客户导入他们的数据库

当我使用Oracle Sql开发人员的导出数据库时,它只导出数据,但我的BLOB缺失了!我的一个表中有很多图像文件,我也想导出。

我想知道我是否真的需要使用oracle exp imp工具;

http://docs.oracle.com/cd/B28359_01/server.111/b28319/exp_imp.htm#i1004777

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

From the documentation

  

格式:为要卸载的数据选择所需的输出格式。根据所选格式,可能会显示其他选项。例如,对于xls(Microsoft Excel文件),您可以为数据和SELECT语句指定工作表名称。

     

对于CLOB数据,仅当格式为加载程序(SQL * Loader)或pdf(PDF)时才支持导出。某些导出类型仅导出字符串的子集,后跟省略号(...)。

它没有明确地引用BLOB,但是如果CLOB只能作为loader或pdf导出,那么BLOB也会有这种限制。如果要在另一个模式或数据库中重新创建此数据,SQL * Loader格式似乎是一个不错的选择。

您期望insert语句看起来像什么?你必须有一个包含二进制值的文本文字,这本身就是一个问题,但你也被限制在4k - 许多图像文件可能会超过。对于CLOB,它可能会给你第一个4903个字符,然后是字符串文字中的省略号,但我不确定;对于一个BLOB甚至没有任何意义。

如果您想在数据库之间传输数据,您应该考虑data pump export/import,或者如果您(或您的客户端)受到服务器访问的限制,那么您可以回退到legacy export/import。两者都支持LOB。数据泵是优越的,如果可能的话应该优先使用。唯一的缺点是转储文件被写入数据库服务器并获得对它们的访问权限(或directory对象上写入的权限可能在某些组织中存在问题。

答案 1 :(得分:0)

任何LOB都不能作为普通数据直接插入(导出/导入)。 您必须编写一个位置/ SQL块来从db获取blob并将其写入。 看看这个链接,你就是这样做的。

http://www.dba-oracle.com/t_writing_blob_clob_os_file.htm 队友的欢呼声 V