我有两张桌子:
CREATE TABLE transaction (
id bigserial PRIMARY KEY,
transactiondataid bigint,
baseamount integer,
pricelistamount integer,
trxamount integer,
...
);
CREATE TABLE transactiondata (
id bigserial PRIMARY KEY,
productname character varying(255),
...
);
transaction
引用transactiondata
作为1:1关系。
如何批处理插入并在批处理中正确设置transactiondataid
transaction
?它有可能吗?
如果由于dbutils而无法实现,是否可以使用简单的PreparedStatement
?
目前,我必须遵循单一插入,其工作原理:
QueryRunner queryRunner = new QueryRunner([getDatasource()]);
Long id = queryRunner.insert("insert into transactiondata (accountgroupname) values(?)", new ScalarHandler<Long>(), "Cola");
queryRunner.insert("insert into transaction (baseamount, transactiondataid) values(?, ?)", new ScalarHandler<Long>(), 10, id);
但是因为我需要插入数百万条记录,所以我需要进行一些批处理......