Java에서 여러 SQL 문을 일괄 실행하는 것은 preparedStatement 및 excuteBatch() 메서드를 통해 수행할 수 있습니다. 그런데 Go의 데이터베이스/sql 패키지를 사용하여 어떻게 동일한 작업을 수행할 수 있습니까?
database/sql 패키지는 SQL 문을 실행할 수 있는 Exec 함수를 제공합니다. 그러나 단일 인수 집합만 사용됩니다. 여러 명령문을 일괄 처리하기 위해 가변 함수를 사용하고 실행할 모든 개별 명령문을 포함하는 단일 SQL 문을 구성할 수 있습니다.
예는 다음과 같습니다.
func bulkInsert(unsavedRows []*ExampleRowStruct) error { var ( valueStrings []string valueArgs []interface{} ) 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 }
이 코드는 모든 행을 데이터베이스에 삽입하는 단일 SQL 문입니다. 개별 명령문 인수(값)를 가변 매개변수로 전달함으로써 단일 네트워크 왕복에서 여러 명령문을 실행할 수 있습니다. 테스트 결과에 따르면 이 접근 방식은 SQL 문 일괄 처리에 Begin, prepare 및 Commit 메서드를 사용하는 것보다 훨씬 더 빠를 수 있는 것으로 나타났습니다.
위 내용은 Go의 데이터베이스/sql 패키지를 사용하여 SQL 문을 효율적으로 일괄 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!