ETL将大型Excel加载到Oracle DB中
我的要求是将放在文件服务器上的大型Excel文件(包含超过160k行数据和大约150列)加载到oracle数据库表中。 它有几个约束,虽然 –
-
两列的位置(可以说'EmpID'和'AcctNum']可能会在Excel中变化 – 有时'EmpID'可能出现在列'A',但也可能出现在E列的其他时间。 因此数据映射必须是dynamic的。
-
该文件可以在一天中的任何时间,并应在文件服务器创build一小时内处理,多个文件可以在一天。 因此,我必须在oracle中创build一些批处理[如通过SQL Server作业运行dtsx]。
操作批处理的操作系统是Unix。
- 这里的performance必须是一个关键的挑战,所以请把它作为一个标准来提高效能。
请告诉我们如何做到这一点[最好使用免费软件/开源工具]
感谢和问候,阿尔卡
就我个人而言,我会写一个Java程序,然后由Unix shell脚本调用。 Java程序将非常简单:
- 打开一个try块
- 在自动提交中打开数据库连接错误
- 创builde准备的声明
- 逐行阅读你的文件
- 对于每一行,
- 标记其字段
- 在这里你必须聪明才能处理你dynamic的领域,当然必须有一个规则
- 把这些值放在准备好的语句中
- 执行它
- 到达文件的结尾
- 承诺
- closures试试,最后打开块
- 回滚
自动提交真实会加速执行。