>백엔드 개발 >Golang >SQL을 사용하여 Go에서 여러 데이터 행을 동시에 효율적으로 삽입하려면 어떻게 해야 합니까?

SQL을 사용하여 Go에서 여러 데이터 행을 동시에 효율적으로 삽입하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-14 03:52:09947검색

How Can I Efficiently Insert Multiple Data Rows Simultaneously in Go Using SQL?

Go에서 효율적인 다중 데이터 삽입

SQL에서 여러 데이터 행을 동시에 삽입하면 효율성이 크게 향상될 수 있습니다. Go에서는 SQL의 준비된 문과 여러 값을 사용하여 이를 달성할 수 있습니다.

다음 데이터를 고려하세요.

data := []map[string]string{
   {"v1":"1", "v2":"1", "v3":"1"},
   {"v1":"2", "v2":"2", "v3":"2"},
   {"v1":"3", "v2":"3", "v3":"3"},
}

데이터를 반복하고 개별 INSERT 문을 실행하는 대신 다음을 사용할 수 있습니다. 다음과 같은 값으로 준비된 문:

sqlStr := "INSERT INTO test(n1, n2, n3) VALUES "
vals := []interface{}{}

for _, row := range data {
    sqlStr += "(?, ?, ?),"
    vals = append(vals, row["v1"], row["v2"], row["v3"])
}
//trim the last ,
sqlStr = sqlStr[0:len(sqlStr)-1]

stmt, _ := db.Prepare(sqlStr)
res, _ := stmt.Exec(vals...)

SQL 문을 한 번 준비한 다음 모든 값으로 실행하면 SQL 문을 최소화할 수 있습니다. 여러 개의 준비된 문을 만드는 오버헤드. 또한 인터페이스{}를 val 유형으로 사용하면 모든 값 유형을 삽입할 수 있으므로 유연성이 제공되고 유형 변환이 방지됩니다.

이 접근 방식은 문자열 연결을 사용하여 SQL 쿼리를 구성하는 것보다 더 효율적이고 안전합니다. 준비된 문은 SQL 삽입 취약점을 방지하고 여러 데이터 행을 동시에 삽입할 때 코드의 전반적인 성능을 향상시킵니다.

위 내용은 SQL을 사용하여 Go에서 여러 데이터 행을 동시에 효율적으로 삽입하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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