【发布时间】:2020-04-23 21:14:03
【问题描述】:
我正在编写一个 AWS lambda 来使用 Golang SDK 从 RDS(SQL Server) 查询 10 个不同的表。到目前为止我学到的是我们必须为表创建一个类似的结构来查询它。但是由于我要查询 10 个表,所以我不想为每个表创建结构,即使表架构也可能有一天会改变。
最近,我想为每个表创建一个 CSV 文件作为查询数据的备份并将其上传到 S3。那么是否可以直接将CSV文件导入到lambda中,以便我可以直接将其上传到S3? 你可以在下面看到我当前的代码
func executeQuery(dbconnection *sql.DB) {
println("\n\n----------Executing Query ----------")
query := "select TOP 5 City,State,Country from IMBookingApp.dbo.Address"
rows, err := dbconnection.Query(query)
if err != nil {
fmt.Println("Error:")
log.Fatal(err)
}
println("rows", rows)
defer rows.Close()
count := 0
for rows.Next() {
var City, State, Country string
rows.Columns
err := rows.Scan(&City, &State, &Country)
if err != nil {
fmt.Println("Error reading rows: " + err.Error())
}
fmt.Printf("City: %s, State: %s, Country: %s\n", City, State, Country)
count++
}
}
此代码仅适用于Address表,不适用于其他表
我也用 GORM 试过了
package main
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mssql"
)
type Currency struct {
CurrencyId int `gorm:"column:CurrencyId;"`
Code string `gorm:"column:Code;"`
Description string `gorm:"column:Description;"`
}
func main() {
db, err := gorm.Open("mssql", "sqlserver://***")
db.SingularTable(true)
gorm.DefaultTableNameHandler = func(dbVeiculosGorm *gorm.DB, defaultTableName string) string {
return "IMBookingApp.dbo.Currency"
}
fmt.Println("HasTable-Currency:", db.HasTable("ClientUser"))
var currency Currency
db.Debug().Find(¤cy)
fmt.Println("Currency:", currency)
fmt.Println("Error", err)
defer db.Close()
}
通过这两种方法,我找不到任何方法使代码对多个表通用。如果有人可以给我一些建议或者您可以指出一些资源,我将不胜感激。
【问题讨论】:
标签: sql-server amazon-web-services go amazon-rds go-gorm