Skip to content

Latest commit

 

History

History
41 lines (34 loc) · 1.31 KB

batch-insert-records-with-create-many.md

File metadata and controls

41 lines (34 loc) · 1.31 KB

Batch Insert Records With createMany

As part of its suite of CRUD functionality, Prisma has a createMany function that allows you to insert many records at once with your target database. This will perform one large insert statement which will generally be faster than an equivalent series of individual insert statements.

const createResult = await prisma.books.createMany({
  data: [
    { isbn: '123', title: 'The Goldfinch' },
    { isbn: '345', title: 'Piranesi' },
    { isbn: '987', title: 'The Fifth Season' },
  ],
  skipDuplicates: true
})

With the skipDuplicates option, any inserts that would result in a duplicate record (isbn is my unique key in this example) will be skipped.

The result of the query will include a count key to let you know how many records were actually inserted.

If I'm bulk inserting a ton of data, I like to chunk it up so that I'm not creating queries that are too big. For a recent script, I found that 1000 was a good chunking number.

import 'chunk' from 'lodash/chunk'

const chunkedBatchInsert = async (records) => {
  for(const batch of chunk(records, 1000)) {
    await prisma.books.createMany({
      data: batch,
      skipDuplicates: true
    })
  }
}