将文件从Oracle BLOB导出到SQL FileTable - 文件类型?

时间:2014-12-08 20:25:52

标签: sql oracle blob filetable utl-file

我正在尝试为包含HUGEBLOB文件的Oracle表的数据转换/升级执行ETL,并且该表中的列仅列出文件名和MIME类型。文件名并不总是(在很多情况下实际上)提供文件类型的扩展,对于那些没有的文件名,MIME类型为“application / octet-stream”,我无法轻易确定原始文件类型是什么,并翻译它给它适当的文件扩展名。我的理解是“application / octet-stream”只是一个基本的二进制文件类型。然而,其中许多被标记为实际上是doc文件,文本文件,pdf等等,但是由于某种原因(一个编码非常糟糕的系统!),它们只是没有以适当的MIME类型上传到数据库中。所以,我试图弄清楚文件的二进制代码中是否存在我可以确定/提取实际文件类型/扩展名的位置 - 如果是这样 - 如何?当它上传到SQL FileTable时,将需要此文件类型扩展名,否则新系统将不知道它是什么类型的文件!

1 个答案:

答案 0 :(得分:0)

通常,可以通过查看文件的前几个字节来确定文件类型。当然,如果您尝试自己实现它,可能的文件格式数量会增加,这会非常繁琐。最有可能的是,您希望利用已经支持大量文件格式的应用程序或框架来尝试找出至少绝大多数文件。

就个人而言,我可能会从Apache Tika to do automated file recognition开始。这将涉及将一些Java代码编写为数据库中的存储过程或作为在数据库外部运行的独立程序。如果您更习惯使用其他语言,则可能会找到该语言的类似API。您也可以使用现有的standalone application to determine the file type,但这几乎肯定需要将文件从数据库保存到操作系统,并且与ETL工具集成可能比定制的代码更难。