【问题标题】:Exporting files from Oracle BLOB to SQL FileTable - file types?将文件从 Oracle BLOB 导出到 SQL FileTable - 文件类型?
【发布时间】:2015-02-06 14:19:40
【问题描述】:

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

【问题讨论】:

    标签: sql oracle blob filetable utl-file


    【解决方案1】:

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

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

    【讨论】:

    • 这看起来正是我所需要的,贾斯汀。我将不得不玩它,看看我能弄清楚什么,但看起来它会起作用。非常感谢!!
    猜你喜欢
    • 2013-12-04
    • 2011-06-06
    • 2010-11-28
    • 1970-01-01
    • 2019-04-09
    • 2015-01-29
    • 1970-01-01
    • 2020-11-22
    • 2015-12-07
    相关资源
    最近更新 更多