【问题标题】:What can I do to enhance the performance of bulk data loading using Derby?我可以做些什么来提高使用 Derby 进行批量数据加载的性能?
【发布时间】:2011-11-16 21:30:57
【问题描述】:

我正在使用 Derby In-Memory DB。我需要在开始时从 csv 文件加载一些数据。目前,将所有 csv 文件加载到他们的表中大约需要 25 秒。我希望时间可以减少。由于数据文件实际上并不是很大。

我所做的是使用 derby 的内置程序。

{CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE (?,?,?,',','"','UTF-8',1 )} or
{CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE (?,?,?,',','"','UTF-8',0 )}

唯一特别的是,有时一个表中的数据会被拆分成许多小的 csv 文件。所以我必须一个一个地加载它们。并且我测试了我是否可以将它们组合在一起,它只需要16秒。但是我无法删除此功能,因为它是用户需要的。

有什么办法可以减少加载数据的时间吗?我应该禁用日志还是编写一些用户定义的函数/程序或可以完成任何其他调整?任何建议都可以。

谢谢!

【问题讨论】:

    标签: performance derby bulkloader


    【解决方案1】:

    使用H2 代替Derby,并使用CSVREAD 功能。如果这仍然太慢,请参阅fast import 优化,或直接使用CSV tool(不使用数据库)。免责声明:我为 H2 编写了 CSV 支持。

    【讨论】:

    • 对,我也在考虑。 H2 非常快。 :)
    • 一个问题,H2 会负责将 Date 类型的列导出为正确的格式吗?我记得它只会使用 toString() 导出。这不太好。
    • 我认为问题是关于进口而不是出口。对于 H2,请使用 CREATE TABLE .. (columnList) AS SELECT ... FROM CSVREAD。这样,您就有了正确的数据类型。
    • 导出使用CSVWRITE('SELECT ...',...)。您可以在SELECT 列列表部分转换为您喜欢的任何格式。导入时也一样。
    • 是的,我问这个是因为导入/导出功能肯定是所有需要的。 :) 谢谢你的好回答。 :)
    猜你喜欢
    • 1970-01-01
    • 2010-09-14
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    相关资源
    最近更新 更多