1
由于性能和其他原因,我正在寻找一种方法来直接解析数据泵转储文件的二进制文件格式。如何直接读取Oracle数据泵二进制转储文件?
数据泵实用程序“impdp”仅适用于数据库服务器主机,不适用于数据库客户端主机。为了运行它,您必须将整个转储文件从DB客户端发送到数据库服务器主机,然后使用SSH运行“impdp”。
有时候,如果只想获取转储文件中包含的模式或表的列表,则将大文件发送到远程主机是无意义的。
我正在寻找一个库(Java首选)或描述转储文件的格式规范,以便在没有官方“impdp”实用程序的帮助下编写本地解析代码。
谢谢。
UPDATE:
我用下面的正则表达式过滤转储文件查找表名:
^[\\x32-\\x7e\\s]{4,}.*</OWNER_NAME><NAME>([^<]*)</NAME>.*
表达[\\x32-\\x7e\\s]
意味着可打印的ASCII字符,包括空格。这会过滤出二进制行。
表达式{4,}
表示至少4个字符。
因为我正在处理XML,所以我提取了直接位于“OWNER_NAME”元素后面的“NAME”元素。 也许这种方式不是那么优雅,但它似乎工作。
请评论,如果这种方式帮助你。
“*使用Java/JDBC进行大量数据操作不是好主意*” - 这是不正确的。如果你做得对,JDBC甚至可以管理“巨大”的数据。 JDBC批处理插入的速度几乎与sqlldr直接路径插入一样快 –
@a_horse_with_no_name您是对的。但通常很少开发人员知道批量/批量操作或APPEND_VALUES提示。批量插入与SpringBatch不同。 – ibre5041
你错过了这一点。我正在寻找一种静态独立的方式来解析专有的二进制文件。抛开JDBC。将网络留在一边。 –