>  기사  >  백엔드 개발  >  for 루프 없이 Golang을 사용하여 PostgreSQL에 CSV 파일을 어떻게 삽입합니까?

for 루프 없이 Golang을 사용하여 PostgreSQL에 CSV 파일을 어떻게 삽입합니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-26 06:54:30616검색

How do I insert a CSV file into PostgreSQL using Golang without for loops?

Golang Sans For 루프를 사용하여 PostgreSQL에 CSV 대량 삽입

for 루프나 루프를 사용하지 않고 PostgreSQL 테이블에 CSV 데이터를 삽입하려는 Golang 초보자인 경우 원시 SQL 쿼리, pgx가 솔루션입니다. 방법은 다음과 같습니다.

  1. pgx 가져오기: 먼저 PostgreSQL용 데이터베이스 인터페이스인 pgx를 가져옵니다.
<code class="go">import (
    "context"
    "fmt"
    "os"

    "github.com/jackc/pgx/v4"
)</code>
  1. 데이터베이스 연결 설정: pgx.Connect()를 사용하여 PostgreSQL 데이터베이스에 연결합니다.
<code class="go">dbconn, err := pgx.Connect(context.Background(), os.Getenv("DATABASE_URL"))
if err != nil {
    panic(err)
}
defer dbconn.Release()</code>
  1. CSV 파일 열기: 원하는 CSV 파일을 로드합니다.
<code class="go">f, err := os.Open(filename)
if err != nil {
    panic(err)
}
defer func() { _ = f.Close() }()</code>
  1. 대량 삽입 수행: CopyFrom()을 활용하여 CSV 파일에서 "csv_test"라는 테이블로 대량 삽입을 수행합니다.
<code class="go">res, err := dbconn.Conn().PgConn().CopyFrom(context.Background(), f, "COPY csv_test FROM STDIN (FORMAT csv)")
if err != nil {
    panic(err)
}</code>
  1. 결과 표시: 대량 삽입의 영향을 받은 행 수를 인쇄합니다.
<code class="go">fmt.Print(res.RowsAffected())</code>

그렇습니다! pgx를 사용하면 수동 루프나 복잡한 쿼리 없이도 대량의 CSV 데이터를 PostgreSQL 데이터베이스에 빠르고 효율적으로 삽입할 수 있습니다.

위 내용은 for 루프 없이 Golang을 사용하여 PostgreSQL에 CSV 파일을 어떻게 삽입합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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