I am using TypeORM as the ORM for my PlanetScale (MySQL) DB. I want to insert records in bulk. My code looks like this:
const batch = [{name: 'a'},{name: 'b'},{name: 'c'},{name: 'd'},{name: 'e'}];
// generate IDs
const insertData = nameRepository.create(batch);
// bulk insert
await nameRepository.save(insertData);
It generates sql that looks like this (5 individual queries in one transaction):
insert into name (id, name) values (1, 'a');
insert into name (id, name) values (2, 'b');
insert into name (id, name) values (3, 'c');
insert into name (id, name) values (4, 'd');
insert into name (id, name) values (5, 'e');
While I expect this to be something like this:
insert into name (id, name) values
(1, 'a'),
(2, 'b'),
(3, 'c'),
(4, 'd'),
(5, 'e');
This wouldn't have been an issue but I am seeing timeout errors and transaction failing (save gets executed in one single transaction) and my hunch is this happens due the fact that I am running 100s of inserts per batch creating too many insert request for my hobby plan (smallest possible instance) in PlanetScale.
I can't change timeout value in PlanetScale. It's fixed to 20s.
With this info in mind, my question is: How can I force TypeOrm to generate one single bulk insert query?
Thanks!