我希望将一份CSV格式的文件中,大约包括200万行数据加载到数据库中,并运行一些SQL语句进行分析,然后删除这些数据。文件大小为2GB,数据是Web服务器日志信息。
经过一些研究,我发现H2内存数据库似乎更快,因为它将数据保存在内存中。但当我尝试加载数据时,由于32位Java的限制,出现了OutOfMemory错误消息。计划使用64位Java再次尝试。
我正在寻找所有优化选项,以快速加载并运行SQL。
test.sql
如果AIX中还有其他可用的数据库,请告诉我。谢谢。
test.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中还有其他可用的数据库,请告诉我。谢谢。