批量插入到具有关系和自动ID的两个表

时间:2017-08-14 12:28:09

标签: java postgresql prepared-statement apache-commons-dbutils

我有两张桌子:

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);

但是因为我需要插入数百万条记录,所以我需要进行一些批处理......

0 个答案:

没有答案