java - 如何直接读取Oracle数据泵二进制转储文件?

标签 java oracle datapump

出于性能和其他原因,我正在寻找一种直接解析数据泵转储文件的二进制文件格式的方法。

数据泵实用程序“impdp”仅适用于数据库服务器主机,不适用于数据库客户端主机。为了运行它,您必须将整个转储文件从数据库客户端发送到数据库服务器主机,然后使用 SSH 运行“impdp”。

有时,例如如果您只想获取转储文件中包含的模式或表的列表,则将大文件发送到远程主机是没有意义的。

我正在寻找一个库(首选 Java)或描述转储文件的格式规范,以便编写代码在本地解析它,而无需官方“impdp”实用程序的帮助。

谢谢。

更新:

我使用以下正则表达式来过滤转储文件以查找表名称:

^[\\x32-\\x7e\\s]{4,}.*</OWNER_NAME><NAME>([^<]*)</NAME>.*

表达式[\\x32-\\x7e\\s]表示可打印的ASCII字符,包括空格。这会过滤掉二进制行。

表达式{4,}表示至少4个字符。

由于我正在处理 XML,因此我提取了直接位于“OWNER_NAME”元素之后的“NAME”元素。 也许这种方式不太优雅,但似乎可行。

如果此方法对您有帮助,请评论。

最佳答案

  • impdp 数据格式是专有的
  • 您还可以使用旧版本的工具 imp/exp,该工具也可以远程工作。但由于网络往返,速度并没有那么快
  • 您还可以通过我们自己的工具将数据导出到平面文件中,然后使用sqlldr(直接路径插入)
  • 您还可以将转储文件放在 NFS 共享上,然后让 Oracle 通过 NFS 访问它

使用 Java/JDBC 进行大量数据操作并不是一个好主意。

关于java - 如何直接读取Oracle数据泵二进制转储文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33144528/

相关文章:

java - Maven Findbugs 插件 - 如何在测试类上运行 findbug

sql - Oracle - 在多个表中有外键

oracle - 使用 "expdp"在 Oracle 中导出序列

java - 如何在 Java 中使用正则表达式拆分 map 字符串

java - 如何控制 javax.xml.transform.Transformer 创建的行结尾?

java - 使用字符串元组作为 HashMap 的键

oracle - 如何将Excel数据导入Toad 9.5表格

oracle - PlSql Translate函数问题

oracle - 在数据泵导出期间排除特定表分区

oracle - 数据泵导入无法打开日志文件