Insert 와 createQueayBuilder().insert 를 이용하면
하나의 레코드 혹은 여러 레코드를 한번에 데이터베이스에 입력이 가능하다.

 

공식문서에서는

insert 를 할때는 createQueayBuilder().insert 를 이용한 방법이 성능적인 측면에서 가장 효율적이다.

[https://orkhan.gitbook.io/typeorm/docs/insert-query-builder]

 

정리

  • 간단한 대량 삽입: insert 메서드를 사용하면 코드가 간결하고 이해하기 쉬움.
  • 복잡한 대량 삽입: createQueryBuilder는 복잡한 SQL 쿼리와 조건을 처리하는 데 더 적합
  • 성능: 대량의 데이터를 삽입할 때는 createQueryBuilder가 더 나은 성능을 발휘

 

insert  사용 예시

mport { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';

@Injectable()
export class UserService {
  constructor(
    @InjectRepository(User)
    private userRepository: Repository<User>,
  ) {}

  async createUsers() {
    const users = [
      { name: 'John Doe', email: 'john.doe@example.com' },
      { name: 'Jane Doe', email: 'jane.doe@example.com' },
      { name: 'Alice', email: 'alice@example.com' },
    ];

    await this.userRepository.insert(users);
  }
}

createQueryBuilder 사용 예시

mport { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';

@Injectable()
export class UserService {
  constructor(
    @InjectRepository(User)
    private userRepository: Repository<User>,
  ) {}

  async createUsers() {
    const users = [
      { name: 'John Doe', email: 'john.doe@example.com' },
      { name: 'Jane Doe', email: 'jane.doe@example.com' },
      { name: 'Alice', email: 'alice@example.com' },
    ];
    
    await this.userRepository.createQueryBuilder()
      .insert()
      .into(User)
      .values(users)
      .orIgnore() // 오류를 무시하고 유효한 데이터가 포함된 행만 삽입
      .execute();
  }
}

 

create

+ Recent posts