>백엔드 개발 >Golang >Go를 사용하여 PostgreSQL에서 다중 행 대량 업데이트를 수행하는 방법은 무엇입니까?

Go를 사용하여 PostgreSQL에서 다중 행 대량 업데이트를 수행하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-11 06:14:10714검색

How to Perform Multi-Row Bulk Updates in PostgreSQL with Go?

Go를 사용하는 PostgreSQL의 다중 행 대량 업데이트

대규모 데이터 세트로 작업할 때 데이터베이스 테이블의 여러 행을 업데이트해야 하는 경우가 많습니다. 단일 작업으로. 이를 통해 성능을 최적화하고 코드 복잡성을 줄일 수 있습니다. PostgreSQL에서는 다양한 접근 방식을 사용하여 대량 업데이트를 수행할 수 있습니다.

한 가지 접근 방식은 파생 테이블을 사용하여 업데이트할 값 집합을 구성하는 것입니다. FROM 절을 활용하면 업데이트해야 하는 각 행의 값을 지정할 수 있습니다. 예를 들면 다음과 같습니다.

UPDATE t
SET column_a = v.column_a,
    column_b = v.column_b
FROM (VALUES (1, 'FINISH', 1234),
                 (2, 'UNFINISH', 3124)
         ) v(id, column_a, column_b)
WHERE v.id = t.id;

파생 테이블 v에는 각 행의 업데이트를 나타내는 (id,column_a,column_b) 쌍이 포함되어 있습니다. 그런 다음 UPDATE 문은 WHERE 절을 사용하여 v의 id 값을 대상 테이블 t의 id 값과 일치시킵니다.

Go에서는 준비된 문을 사용하여 이 쿼리를 실행할 수 있습니다.

const updateBulkSQL = `
UPDATE t
SET column_a = v.column_a,
    column_b = v.column_b
FROM (VALUES (, , ),
                 (, , )
         ) v(id, column_a, column_b)
WHERE v.id = t.id;
`

func main() {
    db, err := sql.Open("postgres", "")
    if err != nil {
        // Handle error
    }

    stmt, err := db.Prepare(updateBulkSQL)
    if err != nil {
        // Handle error
    }

    _, err = stmt.Exec(1, "FINISH", 1234, 2, "UNFINISH", 3124)
    if err != nil {
        // Handle error
    }
}

이 접근 방식은 PostgreSQL에서 대량 업데이트를 수행하는 간결하고 효율적인 방법을 제공하므로 각 행에 대해 별도의 쿼리를 실행할 필요 없이 단일 쿼리에서 여러 행을 업데이트할 수 있습니다.

위 내용은 Go를 사용하여 PostgreSQL에서 다중 행 대량 업데이트를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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