ETL将大型Excel加载到Oracle DB中

我的要求是将放在文件服务器上的大型Excel文件(包含超过160k行数据和大约150列)加载到oracle数据库表中。 它有几个约束,虽然 –

  1. 两列的位置(可以说'EmpID'和'AcctNum']可能会在Excel中变化 – 有时'EmpID'可能出现在列'A',但也可能出现在E列的其他时间。 因此数据映射必须是dynamic的。

  2. 该文件可以在一天中的任何时间,并应在文件服务器创build一小时内处理,多个文件可以在一天。 因此,我必须在oracle中创build一些批处理[如通过SQL Server作业运行dtsx]。

操作批处理的操作系统是Unix。

  1. 这里的performance必须是一个关键的挑战,所以请把它作为一个标准来提高效能。

请告诉我们如何做到这一点[最好使用免费软件/开源工具]

感谢和问候,阿尔卡

就我个人而言,我会写一个Java程序,然后由Unix shell脚本调用。 Java程序将非常简单:

  • 打开一个try块
  • 在自动提交中打开数据库连接错误
  • 创builde准备的声明
  • 逐行阅读你的文件
  • 对于每一行,
  • 标记其字段
    • 在这里你必须聪明才能处理你dynamic的领域,当然必须有一个规则
  • 把这些值放在准备好的语句中
  • 执行它
  • 到达文件的结尾
  • 承诺
  • closures试试,最后打开块
  • 回滚

自动提交真实会加速执行。