【问题标题】:TypeOrm is not doing bulk save when using MariaDb as database使用 MariaDb 作为数据库时,TypeOrm 不进行批量保存
【发布时间】:2019-09-24 11:11:20
【问题描述】:

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

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]

因此,每个条目都是单独插入的,甚至在下一个条目之前运行一个选择查询。

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

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

PS:我正在使用 AWS RDS

【问题讨论】:

  • {chunk: 1} 是什么意思?

标签: postgresql mariadb amazon-rds typeorm


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-11-08
    • 2017-11-27
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 2021-05-24
    相关资源
    最近更新 更多