HSQLDB如何插入100万条记录

时间:2012-11-14 15:37:25

标签: insert hsqldb

我正在开发一个GWT应用程序。

为了测试我的DataGrid,我创建了一个调用我的服务器的按钮。 当我点击它时,应该在数据库中插入100万条记录。

我创建了一个别名

CREATE FUNCTION PUBLIC.GENERATENAME() RETURNS VARCHAR(32768) SPECIFIC GENERATENAME_10073 LANGUAGE JAVA NOT DETERMINISTIC NO SQL CALLED ON NULL INPUT EXTERNAL NAME 'CLASSPATH:com.package.sql.Helper.generateName'

并创建了一个存储过程

CREATE PROCEDURE PUBLIC.GENERATE() SPECIFIC GENERATE_10073 LANGUAGE SQL NOT DETERMINISTIC MODIFIES SQL DATA NEW SAVEPOINT LEVEL BEGIN ATOMIC DECLARE VAL_P BIGINT;TRUNCATE TABLE PUBLIC.CONTACT;SET VAL_P=1;LOOP_LABEL:WHILE VAL_P<=1000 DO INSERT INTO PUBLIC.CONTACT VALUES VAL_P,PUBLIC.GENERATENAME(),PUBLIC.GENERATENAME();SET VAL_P=VAL_P+1;END WHILE LOOP_LABEL;END

我的桌子很简单

CREATE MEMORY TABLE PUBLIC.CONTACT(CONTACT_ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,FIRST_NAME VARCHAR(10) NOT NULL,SECOND_NAME VARCHAR(10) NOT NULL)

我测试并意识到我不能一次插入1M行,或者我可以吗?

插入如此大量数据的最佳方式是什么?

我正在使用HSQLDB版本2.2.4

1 个答案:

答案 0 :(得分:0)

因为您使用CREATE MEMORY TABLE,所有数据都存储在内存中。您可能必须增加Java堆分配以存储数据。

使用文件数据库,您可以使用CREATE CACHED TABLE来减少内存使用。