【发布时间】:2016-10-20 16:19:31
【问题描述】:
我的要求是将放置在文件服务器上的大型 excel 文件 [包含超过 160k 行数据和大约 150 列] 加载到 oracle DB 表中。但它有一些限制 -
两列的位置[让我们说“EmpID”和“AcctNum”] 在 Excel 上可能会有所不同 - 就像有时“EmpID”可能出现在“A”列但也可能出现在“E”列其他时间。因此数据映射必须是动态的。
文件可以在一天中的任何时间出现,并且应该在文件服务器中创建后一小时内处理,并且一天可以出现多个文件。因此我必须在 oracle 中创建一些 Batch [比如通过 SQL 服务器作业运行 dtsx]。
要运行批处理的操作系统是 Unix。
- 性能必须是这里的关键挑战,因此请将其作为性能有效的标准。
请告知我们如何做到这一点[最好使用免费软件/开源工具]
感谢和问候, 阿尔卡
【问题讨论】:
-
首先,您需要将该 Excel 文件标准化为 csv 格式,并为每一行提供正确的值....然后您可以按照以下步骤将批量插入到您的数据库中 stackoverflow.com/questions/22241428/oracle-bulk-import
-
我建议使用Apache POI处理Excel文件,然后实现你的业务逻辑找到对应的数据到数据库表列,并使用JDBC插入数据到数据库。
-
您可能还想查看这个相关问题:stackoverflow.com/questions/120001/…。
-
整个文件是否具有相同的布局,或者整个文件的布局是否不同?无论文件具有同质或异构布局,您如何确定从中定位数据的正确列?它们的列标题或其他特殊记录是在同类文件的顶部还是在异类文件更改格式时?
-
第一行将是标题。
标签: java excel oracle etl database-administration