Postgres의 대량 삽입: 종합 가이드
대량 삽입은 데이터베이스 관리에서 일반적인 작업으로, 매우 효율적인 방법으로 한 번에 많은 수의 레코드를 생성합니다. 이렇게 하면 레코드를 개별적으로 삽입하는 것에 비해 처리 시간을 크게 줄일 수 있습니다.
제공된 코드 조각에서 Go용 PostgreSQL 데이터베이스 드라이버인 pgx를 사용하여 "keys" 테이블에 데이터를 대량 삽입하려고 시도하는 동안 문제에 직면하고 있습니다. . "예상된 10개의 인수, 1개 있음" 오류는 실행 중인 SQL 문의 형식이 전달되는 값 수에 맞게 올바르게 지정되지 않았음을 나타냅니다.
이 문제를 해결하려면 내장된 대량 삽입 작업을 위해 특별히 설계된 pgx.Conn.CopyFrom 함수입니다. CopyFrom은 SQL 문을 수동으로 작성하는 것에 비해 뛰어난 성능을 제공하는 PostgreSQL 복사 프로토콜을 활용합니다.
CopyFrom을 사용한 올바른 구현은 다음과 유사합니다.
<code class="go">// Define data to be inserted data := []struct { KeyVal string LastVal int }{ {"abc", 10}, {"dns", 11}, {"qwe", 12}, {"dss", 13}, {"xcmk", 14}, } // Establish connection to the database dbUrl := "..." conn, err := pgx.Connect(context.Background(), dbUrl) if err != nil { log.Fatalf("Error connecting to database: %v", err) } defer conn.Close(context.Background()) // Execute bulk insertion using CopyFrom copyCount, err := conn.CopyFrom( pgx.Identifier{"keys"}, []string{"keyval", "lastval"}, pgx.CopyFromRows(data), ) if err != nil { log.Fatalf("Error inserting data: %v", err) } fmt.Printf("Inserted %d rows into the keys table.\n", copyCount)</code>
CopyFrom을 활용하면 작업을 간소화할 수 있습니다. 대량 삽입 작업을 수행하고 성능을 크게 향상시킵니다. 예상치 못한 오류를 방지하려면 적절한 조각에 열 이름을 올바르게 지정하고 데이터 조각의 형식이 올바른지 확인하세요.
위 내용은 pgx를 사용하여 Postgres에서 대량 삽입 작업을 효율적으로 수행하고 \'예상 10개 인수, 1개\' 오류를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!