使用 MariaDb 作为数据库时,TypeOrm 没有进行批量保存

TypeOrm is not doing bulk save when using MariaDb as database

我正在尝试将 1000 多个条目插入到 mariadb 数据库中。

let repo = await this.getRepository(RawOhlcv)
return await repo.save<RawOhlcv>(entityObj, { chunk: 1 })

这是 typeorm 日志

query: INSERT INTO `raw_ohlcv`(`raw_ohlcv_id`, `stock_id`, `symbol`, `date`, `open`, `high`, `low`, `close`, `volume`, `is_active`, `created_at`, `updated_at`) VALUES (DEFAULT, DEFAULT, ?, ?, ?, ?, ?, ?, ?, ?, DEFAULT, DEFAULT) -- PARAMETERS: ["20MICRONS","2019-09-04",33,34.2,33,33.05,8787,true]
query: SELECT `RawOhlcv`.`raw_ohlcv_id` AS `RawOhlcv_raw_ohlcv_id`, `RawOhlcv`.`is_active` AS `RawOhlcv_is_active`, `RawOhlcv`.`created_at` AS `RawOhlcv_created_at`, `RawOhlcv`.`updated_at` AS `RawOhlcv_updated_at` FROM `raw_ohlcv` `RawOhlcv` WHERE `RawOhlcv`.`raw_ohlcv_id` = ? -- PARAMETERS: [617]
query: INSERT INTO `raw_ohlcv`(`raw_ohlcv_id`, `stock_id`, `symbol`, `date`, `open`, `high`, `low`, `close`, `volume`, `is_active`, `created_at`, `updated_at`) VALUES (DEFAULT, DEFAULT, ?, ?, ?, ?, ?, ?, ?, ?, DEFAULT, DEFAULT) -- PARAMETERS: ["21STCENMGM","2019-09-04",12.3,12.3,12.15,12.3,244,true]
query: SELECT `RawOhlcv`.`raw_ohlcv_id` AS `RawOhlcv_raw_ohlcv_id`, `RawOhlcv`.`is_active` AS `RawOhlcv_is_active`, `RawOhlcv`.`created_at` AS `RawOhlcv_created_at`, `RawOhlcv`.`updated_at` AS `RawOhlcv_updated_at` FROM `raw_ohlcv` `RawOhlcv` WHERE `RawOhlcv`.`raw_ohlcv_id` = ? -- PARAMETERS: [618]
query: INSERT INTO `raw_ohlcv`(`raw_ohlcv_id`, `stock_id`, `symbol`, `date`, `open`, `high`, `low`, `close`, `volume`, `is_active`, `created_at`, `updated_at`) VALUES (DEFAULT, DEFAULT, ?, ?, ?, ?, ?, ?, ?, ?, DEFAULT, DEFAULT) -- PARAMETERS: ["3IINFOTECH","2019-09-04",1.7,1.75,1.7,1.7,405693,true]
query: SELECT `RawOhlcv`.`raw_ohlcv_id` AS `RawOhlcv_raw_ohlcv_id`, `RawOhlcv`.`is_active` AS `RawOhlcv_is_active`, `RawOhlcv`.`created_at` AS `RawOhlcv_created_at`, `RawOhlcv`.`updated_at` AS `RawOhlcv_updated_at` FROM `raw_ohlcv` `RawOhlcv` WHERE `RawOhlcv`.`raw_ohlcv_id` = ? -- PARAMETERS: [619]

所以每个条目都是单独插入的,在下一个条目之前甚至有一个 select 查询 运行。

而当我尝试对 postgres 数据库执行相同操作时,它会立即插入所有条目。

如何使用 mariadb 实现批量插入?

PS:我正在使用 AWS RDS

Typeorm 提供的保存查询在使用 AWS RDS 时是这样解释的。但是,如果您使用查询构建器使用纯插入查询,那么它会执行批量插入

let repo = await this.getRepository(RawOhlcv)
await repo
  .createQueryBuilder()
  .insert()
  .values(entityArray)
  .execute()