首頁  >  文章  >  後端開發  >  如何使用 Go 將行從 STDIN 匯入 PostgreSQL?

如何使用 Go 將行從 STDIN 匯入 PostgreSQL?

Susan Sarandon
Susan Sarandon原創
2024-10-24 16:06:01397瀏覽

How to Import Rows into PostgreSQL from STDIN Using Go?

使用Go 將行從STDIN 匯入PostgreSQL

在Go 中,您可以使用pq 將行從標準輸入(STDIN) 導入(STDIN)包裹。這種方法直接將資料輸入資料庫,不需要中間文件。

要實現從STDIN 直接匯入行,請依照下列步驟操作:

  1. 開啟PostgreSQL 連線: 使用sql.Open 函數建立與PostgreSQL 資料庫的連接。
  2. 開始交易: 使用 Begin 函式將多個語句組合在一起啟動資料庫交易。
  3. 準備複製語句:使用 pq.CopyIn 建立用於複製資料的準備語句。此語句指定目標表名稱和要匯入的列。
  4. 導入行: 針對要匯入的每一行資料迭代執行準備好的語句。使用 Exec 函數將每一行傳送到資料庫。
  5. 終止複製語句:新增所有行後,再次執行準備好的語句(不含任何參數)以完成匯入程序。
  6. 關閉準備好的語句:透過呼叫 Close 方法釋放與準備好的語句關聯的資源。
  7. 提交交易:提交交易以使更改永久化

範例程式碼:

以下程式碼範例示範使用Go 從STDIN 匯入行:

<code class="go">package main

import (
    "database/sql"
    "fmt"
    "io"
    "log"

    "github.com/lib/pq"
)

func main() {
    db, err := sql.Open("postgres", "host=localhost port=5432 user=postgres password=mysecret dbname=mydatabase")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    rows := [][]string{
        {"Rob", "Pike"},
        {"Ken", "Thompson"},
        {"Robert", "Griesemer"},
    }

    txn, err := db.Begin()
    if err != nil {
        log.Fatal(err)
    }

    stmt, err := txn.Prepare(pq.CopyIn("test", "first_name", "last_name"))
    if err != nil {
        log.Fatal(err)
    }

    for _, r := range rows {
        if _, err = stmt.Exec(r[0], r[1]); err != nil {
            log.Fatal(err)
        }
    }

    if _, err = stmt.Exec(); err != nil {
        log.Fatal(err)
    }

    if err = stmt.Close(); err != nil {
        log.Fatal(err)
    }

    if err = txn.Commit(); err != nil {
        log.Fatal(err)
    }

    fmt.Println("Rows imported successfully.")
}</code>

透過遵循這些步驟並利用pq 套件,您可以在Go 程式中直接從STDIN 有效地將資料匯入PostgreSQL。

以上是如何使用 Go 將行從 STDIN 匯入 PostgreSQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn