我认为 SQL Developer 不可能做到这一点(但我不经常使用它)。
我正在使用的 SQL 客户端 - SQL Workbench/J - 可以做到这一点。
有几种方法可以导出这些数据。
生成专有脚本
它可以创建一个 SQL 脚本,该脚本使用特殊的(特定于工具的)表示法来引用外部文件,例如:
INSERT INTO images
(name, data)
VALUES
('foobar', {$blobfile='blob_r1_c2.data'});
上述语句只能用 SQL Workbench 再次执行。它与任何其他 SQL 客户端都不兼容。
使用 utl_raw
另一种选择是使用“blob 文字”,但由于 Oracle 对字符文字的 4000 字节的限制,这仅适用于非常小的 blob 值:
INSERT INTO images
(name, data)
VALUES
('foobar', to_blob(utl_raw.cast_to_raw('......')));
其中cast_to_raw
调用的字符文字将包含 BLOB 的十六进制值。由于每个“blob 字节”需要 2 个字符,因此您不能用它来处理大于 2000 字节的 BLOB。但该语法几乎适用于所有 Oracle SQL 工具(如果它们可以处理行很长的脚本)。
SQL*Loader 输入文件
第三种选择是将数据导出到可以使用 SQL*Loader 导入的文本文件中:
文本文件将包含如下内容:
名称数据
foobar blob_r1_c2.data
连同以下 SQL*Loader 控制文件:
选项(跳过=1)
加载数据字符集 'WE8ISO8859P15'
INFILE 'images.txt'
附加
进入表格图像
由 '\t' 尾随 NULLCOLS 终止的字段
(
姓名,
lob_file_data 填充器,
数据 LOBFILE(lob_file_data) 由 EOF 终止
)
这可以使用 SQL*Loader 加载,因此不需要 SQL Workbench 来导入数据。
更多细节在手册中
编辑
正如 Alex 在他的评论中指出的那样,您也可以使用 DataPump 导出 - 但这需要您有权访问服务器上的文件系统。以上方案都是将数据存储在客户端。