导入电子表格数据哪种方式更好?

时间:2011-12-19 22:40:44

标签: java data-structures spreadsheet

我正在尝试使用Java将数据从speadsheet导入数据库。有两种方法可以做到这一点:1)从speardsheets读取和提取数据并将它们组织成数据结构,例如ArrayLists,Vectors或不同对象的映射,这样我就可以摆脱冗余条目等,然后写将数据结构导入数据库。 2)提取数据并在读取和提取单元格时将它们直接放入数据库。我认为第一种方式可能更好,但第二种方式会更快吗?我应该想到的任何其他考虑因素?

感谢。

2 个答案:

答案 0 :(得分:3)

你想在这里做一个类似于方法#1的executeBatch()。因此,基本上您从电子表格中读取批量大小的数据(即1000条记录),然后您一次批量提交事务到DB。之后转到下一批等等等等。通过这种方法,您可以有效地利用数据库,节省自己的网络旅行,而且最终不会在内存中囤积大量数据,这可能会导致内存不足异常。您还应该重用相同的连接和预准备语句对象。

关于数据清理过程,在放入持久存储(如表)之前,绝对应该清理数据。您可能需要在将来生成报告或在其他应用程序中使用这些数据,因此请使用干净的&从长远来看,结构良好的表格将对您有所帮助。对于批处理应用程序,通常的性能要求不如事务系统高。

您还应该使用apache poi之类的帮助程序库来读取Excel文档。就数据结构而言,它将取决于您的数据,但通常ArrayList应该足够了。

您可能会考虑的另一点是,大多数ETL工具都提供开箱即用的这类数据加载任务。如果您的情况允许,我强烈建议您查看像Kettle这样的ETL工具来加载数据。您可以节省一些时间并学习一种新工具。

希望这有帮助!

答案 1 :(得分:2)

您可以考虑使用ETL工具(提取,转换和加载)来处理您所指的任务