>백엔드 개발 >Golang >`database/sql`을 사용하여 Go에서 일괄 SQL 문을 실행하는 방법은 무엇입니까?

`database/sql`을 사용하여 Go에서 일괄 SQL 문을 실행하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-17 16:42:14119검색

How to Execute Batched SQL Statements in Go using `database/sql`?

database/sql을 사용하여 Go에서 일괄 SQL 문 실행

문제:

Go에서 여러 개의 SQL 문을 어떻게 실행할 수 있습니까? 데이터베이스/sql을 사용하는 단일 데이터베이스 작업의 SQL 문 패키지?

해결책:

database/sql 패키지는 SQL 문 일괄 처리를 허용하는 다목적 Exec() 함수를 제공합니다. 구현 방법은 다음과 같습니다.

func BulkInsert(unsavedRows []*ExampleRowStruct) error {
    valueStrings := make([]string, 0, len(unsavedRows))
    valueArgs := make([]interface{}, 0, len(unsavedRows)*3)
    for _, post := range unsavedRows {
        valueStrings = append(valueStrings, "(?, ?, ?)")
        valueArgs = append(valueArgs, post.Column1)
        valueArgs = append(valueArgs, post.Column2)
        valueArgs = append(valueArgs, post.Column3)
    }
    stmt := fmt.Sprintf("INSERT INTO my_sample_table (column1, column2, column3) VALUES %s",
        strings.Join(valueStrings, ","))
    _, err := db.Exec(stmt, valueArgs...)
    return err
}

장점:

  • 이 접근 방식은 단일 요청에서 모든 문을 실행하여 네트워크 왕복을 줄입니다.
  • 다음에서 설명한 것처럼 여러 행의 데이터를 삽입하는 데 효율적입니다. 예.
  • Exec() 함수의 가변 특성을 활용하므로 구현이 쉽습니다.

위 내용은 `database/sql`을 사용하여 Go에서 일괄 SQL 문을 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.