首页  >  文章  >  后端开发  >  如何使用 Go 的 pq 包将数据从 STDIN 导入到 PostgreSQL?

如何使用 Go 的 pq 包将数据从 STDIN 导入到 PostgreSQL?

Linda Hamilton
Linda Hamilton原创
2024-10-24 18:34:31887浏览

How to Import Data from STDIN to PostgreSQL Using Go's pq Package?

如何从 STDIN 将行导入到 Postgresql? [重复]

在 Go 中,您可以使用 pq 包将行从 STDIN 导入到 PostgreSQL。以下是分步解决方案:

第 1 步:准备数据库连接

<code class="go">import (
    "database/sql"

    "github.com/lib/pq"
)

db, err := sql.Open("postgres", "dbname=mydb user=myuser password=mypassword")
if err != nil {
    log.Fatalf("open: %v", err)
}</code>

第 2 步:启动事务

<code class="go">txn, err := db.Begin()
if err != nil {
    log.Fatalf("begin: %v", err)
}</code>

第 3 步:准备Copy 语句

使用 pq.CopyIn() 创建准备好的语句。

<code class="go">stmt, err := txn.Prepare(pq.CopyIn("test_table", "column1", "column2", ...))
if err != nil {
    log.Fatalf("prepare: %v", err)
}</code>

第 4 步:执行 Copy 语句

迭代数据并执行 stmt .Exec() 每行。

<code class="go">for _, row := range rows {
    _, err = stmt.Exec(row.Column1, row.Column2, ...)
    if err != nil {
        log.Fatalf("exec: %v", err)
    }
}</code>

第 5 步:执行最终复制语句

<code class="go">_, err = stmt.Exec()
if err != nil {
    log.Fatalf("exec: %v", err)
}</code>

第 6 步:关闭语句并提交事务

<code class="go">stmt.Close()
err = txn.Commit()
if err != nil {
    log.Fatalf("commit: %v", err)
}</code>

此代码将有效地将行从 STDIN 导入到您的 PostgreSQL 表。

以上是如何使用 Go 的 pq 包将数据从 STDIN 导入到 PostgreSQL?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn