我想从 CSV 格式的文件加载大约 200 万行到数据库并运行一些 SQL 语句进行分析,然后删除数据。文件大小为 2GB。数据是 Web 服务器日志消息。做了一些研究,发现 H2 内存数据库似乎更快,因为它将数据保存在内存中。当我尝试加载数据时,由于 32 位 java 而出现 OutOfMemory 错误消息。计划尝试使用 64 位 java。
我正在寻找所有优化选项来快速加载并运行 SQL。
测试.sql
CREATE TABLE temptable (
f1 varchar(250) NOT NULL DEFAULT '',
f2 varchar(250) NOT NULL DEFAULT '',
f3 reponsetime NOT NULL DEFAULT ''
) as select * from CSVREAD('log.csv');
在 64 位 java 中这样运行:
java -Xms256m -Xmx4096m -cp h2*.jar org.h2.tools.RunScript -url 'jdbc:h2:mem:test;LOG=0;CACHE_SIZE=65536;LOCK_MODE=0;UNDO_LOG=0' -script test.sql
如果在 AIX 中可以使用任何其他数据库,请告诉我。
谢谢