如何解决“恐慌:sql:未知驱动程序“postgres”(忘记导入?)»?

2024-03-22

我正在尝试使用 GO 将 .csv (预先固定宽度/表格)中的数据插入到 POSTGRES 中。

我做了什么:

package main

import (
    "bufio"
    "database/sql"
    "encoding/csv"
    "encoding/json"
    "fmt"
    "io"
    "log"
    "os"
)

type Consumidor struct {
    CPF string   `json:"CPF"`
    Private  string   `json:"Private"`
    Incompleto  string   `json:"Incompleto"`
    Compras   *Compras `json:"Compras,omitempty"`
}

type Compras struct {
    DataUltimacompra  string `json:"DataUltimacompra"`
    TicketMedio string `json:"TicketMedio"`
    TicketUltimaCompra string `json:"TicketUltimaCompra"`
    LojaMaisFrequente string `json:"LojaMaisFrequente"`
    LojaUltimaCompra string `json:"LojaUltimaCompra"`
}

const (
    host     = "localhost"
    port     = 5432
    user     = "postgres"
    password = ""
    dbname   = "neoway"
)

func main() {
    csvFile, _ := os.Open("data.csv")
    reader := csv.NewReader(bufio.NewReader(csvFile))
    var dadosinsert []Consumidor
    for {
        line, error := reader.Read()
        if error == io.EOF {
            break
        } else if error != nil {
            log.Fatal(error)
        }
        dadosinsert = append(dadosinsert, Consumidor{
            CPF: line[0],
            Private:  line[1],
            Incompleto: line[2],
            Compras: &Compras{
                DataUltimacompra:  line[3],
                TicketMedio:  line[4],
                TicketUltimaCompra: line[5],
                LojaMaisFrequente:  line[6],
                LojaUltimaCompra: line[7],

            },
        })
    }
    peopleJson, _ := json.Marshal(dadosinsert)
    fmt.Println(string(peopleJson))

    psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
        "password=%s dbname=%s sslmode=disable",
        host, port, user, password, dbname)
    db, err := sql.Open("postgres", psqlInfo)
    if err != nil {
        panic(err)
    }
    defer db.Close()

    sqlStatement := `
INSERT INTO base_teste (CPF,"PRIVATE","INCOMPLETO","DATA DA ÚLTIMA COMPRA","TICKET MÉDIO","TICKET DA ÚLTIMA COMPRA","LOJA MAIS FREQUÊNTE","LOJA DA ÚLTIMA COMPRA")
)
VALUES ($1, $2, $3, $4, $5, $6, 7$, 8$)
RETURNING id`
    id := 0
    err = db.QueryRow(sqlStatement, 30, "a", "b", "c").Scan(&id)
    if err != nil {
        panic(err)
    }
    fmt.Println("New record ID is:", id)
}

当我运行时,我收到此错误

[{“CPF”:“xxxxx”,“私人”:“TRUE”,“Incompleto”:“FALSE”,“Compras”:{“DataUltimacompra”:“12/10/2018”,“TicketMedio”:“200” ,"TicketUltimaCompra":"250","LojaMaisFrequente":"111.111.111-99","LojaUltimaCompra":"111.111.111-88"}}] 恐慌:sql:未知驱动程序“postgres”(忘记导入?)

goroutine 1 [运行]: main.main() C:/Users/Willian/Desktop/NEOWAY PROJECT/neoway csv 前缀宽度导入器/main.go:70 +0xbed

进程已完成,退出代码为 2


您导入了sql/database,一个包包含sql相关操作的通用接口。

既然只是通用接口,您需要导入接口的具体实现,在这种情况下,它是数据库驱动程序。

从你的代码:sql.Open("postgres", psqlInfo),我猜你正在使用postgresql数据库。有一些用于 golang 的 postgresql 驱动程序 https://github.com/golang/go/wiki/SQLDrivers可用,其中之一是https://github.com/lib/pq https://github.com/lib/pq司机。因此将其添加到导入语句中。

package main

import (
    "bufio"
    "database/sql"
    "encoding/csv"
    "encoding/json"
    "fmt"
    "io"
    "log"
    "os"
    _ "github.com/lib/pq" // <------------ here
)

数据库驱动程序pq必须导入_import 语句前面的字符。这是因为我们没有在代码中明确使用它,同时它仍然需要database/sql包裹。有关更多详细信息,请参阅此相关的 SO 问题import语句前面的下划线是什么意思? https://stackoverflow.com/questions/21220077/what-does-an-underscore-in-front-of-an-import-statement-mean-in-golang.

有关 golang sql 的更多信息:https://pkg.go.dev/database/sql https://pkg.go.dev/database/sql. .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解决“恐慌:sql:未知驱动程序“postgres”(忘记导入?)»? 的相关文章

随机推荐

  • 升级到 Xcode 5.0.2:xib 警告。属性不可用

    我最近升级到了 xcode 5 0 2 现在 当我构建 Cocoa 应用程序时 我收到此警告 属性不可用 在 10 8 之前的 Mac OS X 版本上使用当前宽度作为最大布局宽度 我尝试找到 最大布局宽度 但无法找到 我该如何摆脱这个警告
  • ES6的导出和花括号

    我看到聊天频道中发布了一段代码 他的代码的最后是 export UserInformation 有些团体表示语法错误 有人说只要变量存在就可以 那么哪一组是正确的呢 我也是第一次见到这种语法 我在导出时从未见过花括号 我只在导入时使用过它们
  • 使用 PHP 测试 FTP 连接

    我正在使用下面的 PHP 脚本来测试 FTP 连接 目前 如果连接成功 它正在打印文件数组 如果能够连接 如何让它也显示消息 就像 连接成功 一样 con ftp connect server or die Couldn t connect
  • 如何将 facebook 测试页面订阅到 facebook apps webhook

    我正在创建聊天机器人并想在 Facebook 上建立联系 我想在我的页面中测试我的信使聊天机器人 但我必须首先进行应用程序审查和业务验证 但我不想这样做 因为我刚刚开发了我的聊天机器人 或者你可以说这是暂存环境 I found that w
  • Python:将参数传递给 threading.Thread 实例的正确方法是什么

    我扩展了 threading Thread 我的想法是做这样的事情 class StateManager threading Thread def run self lock state while True lock acquire se
  • 如何用 Canvas 绘制曲线动画?

    我有很多点想慢慢画出来 我尝试 setTimeOut 以及由此产生的效果tutorial http www html5canvastutorials com advanced html5 canvas linear motion anima
  • 如何从 MySQL 检索 JSON 数据?

    我有下表及其关系 我将 JSON 数据存储在 client services 表中 他们有什么方法可以使用 MySQL 查询检索 JSON 值 如下所示 SELECT getJson quota as quota client id FRO
  • 在 tkinter 文件对话框中指定文件路径

    我有一个文件对话框来打开文件 但是 我要打开的文件与我编写的程序位于不同的目录中 文件对话框打开到我所在的目录 有没有办法指定文件对话框打开的位置 这是相关代码 root Tk root fileName tkFileDialog asko
  • 调整通话状态栏的大小?

    如何根据笔尖上的通话状态栏调整视图大小 我认为它只是设置调整大小属性 但它们没有为根 UIView 启用 我认为我的主要问题是我不知道这一切叫什么 除了谈论模拟器菜单命令之外 我在任何文档中都找不到对通话中状态栏的任何引用 iOS 将调用你
  • Kendo Grid:如何在一个单元格中显示 List

    我尝试迭代列表并将所有元素显示到列中的单元格中 但我无法使其正常工作 这是我到目前为止所拥有的 在网格定义中 columns Bound x gt x locationList Title Locations Included Client
  • 在 Windows 上运行 libxlsxwriter

    我正在尝试使用libxlsxwriter 但我似乎可以让事情正确编译或运行 我按照 Windows 的说明使用Mingw w64 and msys2可以在这里找到 http libxlsxwriter github io getting s
  • 减少小程序加载时间

    我有一个 html 文件 其中包含一个作为小程序的 jar 文件 当我打开 html 文件时 加载小程序的时间太多了 有什么方法可以减少加载时间吗 这里有三个主要因素在起作用 1 Java 启动时间 冷启动过去需要 5 10 秒 但是随着J
  • 如何修复 Mavericks 上 Gemfile 中的 libv8 错误?

    当我跑步时bundle install I get An error occurred while installing libv8 3 11 8 17 and Bundler cannot continue Make sure that
  • 在准备好的语句中使用 COLLECT() 时,为什么会收到“ORA-00932:不一致的数据类型:预期 - 得到 -”?

    我将此查询与Perl DBI https metacpan org module DBI SELECT c change id COLLECT t tag AS the tags FROM changes c LEFT JOIN tags
  • Cassandra 返回数值的无序结果集

    我是 No SQL 新手 刚刚开始学习 Cassandra 我有以下问题要问 我创建了一个包含一列的简单表来了解 Cassandra 分区和集群 并尝试在插入后查询所有值 我的表结构 create table if not exists m
  • SQL Server 如何将 5 分钟的间隔重新组合为 15 分钟的间隔?

    我正在建立一个网站 您可以在其中在线预约 我不会详细解释所有内容 但我有一张桌子 上面有我可以预约的时间 以 5 分钟为间隔进行分配 这是一个例子 ID StartDate EndDate 492548 2016 12 16 08 00 0
  • 这是在关系数据库中对地址信息进行建模的好方法吗?

    我想知道这是否是一个好的设计 我有许多需要地址信息的表 例如街道 邮政编码 邮政编码 国家 地区 传真 电子邮件 有时同一个地址会重复多次 例如 可以针对供应商存储地址 然后在发送给他们的每个采购订单上存储地址 然后 供应商可以更改其地址
  • 如何对二维numpy数组的所有列进行逻辑运算

    假设我有以下内容2D NumPy由四行三列组成的数组 gt gt gt a numpy array True False False False True False gt gt gt array True False False Fals
  • 在数据库中存储从客户收到的 hl7 消息的最佳方法

    大家好 我是新欢 我想知道将 hl7 消息存储在 mysql 数据库中的表中的最佳方法 该表仅将一列存储为 hl7 消息 或者存储在行和列中 例如发送应用程序列 接收应用程序列等 我无法找到合适的答案 所以请帮助我 提前致谢 解析 HL7
  • 如何解决“恐慌:sql:未知驱动程序“postgres”(忘记导入?)»?

    我正在尝试使用 GO 将 csv 预先固定宽度 表格 中的数据插入到 POSTGRES 中 我做了什么 package main import bufio database sql encoding csv encoding json fm