我对posgres和Go很新,但在这方面已经挣扎了一段时间。我目前正在尝试发送查询以从表中检索所有内容。 当我尝试使用
时def calcPerPartition(itr: Iterator[(InputKey, InputVal)]):
Iterator[Option[(ReportKey, ReportVal)]] = {
val workMap = mutable.HashMap.empty[WorkKey, WorkVal]
var finalWorkMap = true
new Iterator[Option[(ReportKey, ReportVal)]](){
override def hasNext: Boolean = itr.hasNext
override def next(): Option[(ReportKey, ReportVal)] = {
val curr = itr.next()
val iKey = curr._1
val iVal = curr._2
val eventKey = EventKey(openKey.date, openKey.symbol)
if (iKey.recordType == reportType) {
Some(getNewReportRecord(workMap, iKey, iVal))
}
else {
//otherwise update the generic interest map but don't accumulate anything
updateWorkMap(workMap, iKey, iVal)
if (itr.hasNext) {
next()
}
else {
if(finalWorkMap){
finalWorkMap = false //because we want a final only once
Some(workMap.map(convertToReport))
}
else {
None
}
}
}
}
}
}
在postgres中,它显示了所有内容,但是当我使用Query执行相同操作时,我得到了。
SELECT * FROM land_registry_price_paid_uk
这是我当前的代码。
sql: expected 16 destination arguments in Scan, not 1
感谢任何帮助。
答案 0 :(得分:2)
看起来您的查询工作正常,您返回16列数据并尝试将它们全部扫描到单个字符串变量中,您需要为每列提供持有者变量:
var name string
// vars to hold other column values go here
// then reference vars in table order as args to row.Scan below
if err := rows.Scan(&name); err != nil {
log.Fatal(err)
}
如果您还没有使用过sql / go,那么您可能还想查看为处理可空值而提供的特殊类型,因为您可能也需要这些:
<强>更新强>
为了进一步说明,假设您有一个三列表,其中包含以下字段:
您可以按如下方式阅读该行(未测试):
var (
id int
name string
optionalData sql.NullString
)
if err := rows.Scan(&id, &name, &optionalData); err != nil {
log.Fatal(err)
}
答案 1 :(得分:0)
非常感谢,这对我很有用。但我想补充一点信息。 好吧,我不知道你的goalng版本是什么,但是我在windows / 386上使用的是1.11.2版本,但是当我添加括号时,这是行不通的。但是没有它们,它运行得很好。
使用此: 行,错误:= a.DB.Query(“ SELECT * FROM mytable”) 代替 : 行,错误:= a.DB.Query(“ SELECT(*)FROM mytable”)
这是我的示例:
rows, err := db.Query("SELECT * FROM words")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
println(rows)
for rows.Next() {
var word, exa1, exa2, mean string
var id int
if err := rows.Scan(&id, &word, &exa1, &exa2, &mean); err != nil {
log.Fatal(err)
}
fmt.Printf("id: %d\n word: %s \n example1: %s \n example2: %s \n meaning: %s\n---\n\n", id, word, exa1, exa2, mean)
}
I hope this will be useful.