6

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

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

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

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

任何想法?

4

2 回答 2

6

从文档中

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

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

它没有明确引用 BLOB,但如果 CLOB 只能导出为 loader 或 pdf,那么 BLOB 也将具有该限制是有道理的。如果您想在另一个模式或数据库中重新创建这些数据,SQL*Loader 格式似乎是一个不错的选择。

您希望该insert声明是什么样的?你必须有一个包含二进制值的文本文字,这本身就是一个问题,但你也被限制为 4k - 许多图像文件可能会超过。对于 CLOB,它可能会给您前 4903 个字符,后跟字符串文字中的省略号,但我不确定;对于一个 BLOB,即使这样也没有任何意义。

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

于 2014-04-02T09:57:07.310 回答
0

任何 LOB 都不能作为普通数据直接插入(导出/导入)。您必须编写一个 place/SQL 块才能从 db 获取 blob 并将其写入 is。查看此链接,这就是您的具体做法。

http://www.dba-oracle.com/t_writing_blob_clob_os_file.htm 干杯队友 V

于 2014-04-02T10:04:57.593 回答