我正在使用 Golang 應用程式和 Gorm ORM 連接到資料庫。如何通過 ORM 進行表轉儲(.sql 檔案)?甚至可能嗎?
如果可能,是否可以使用where子句(如 in mysqldump --where="...")。
uj5u.com熱心網友回復:
這是不可能的,mysqldump 是一個單獨的實用命令列工具,如 mysqlimport、mysqladmin 等。它不是 MySQL 查詢。
但是您應該能夠使用 gorm 運行此原始查詢以將查詢結果存盤到檔案https://dev.mysql.com/doc/refman/8.0/en/select-into.html
uj5u.com熱心網友回復:
GORM 中沒有轉儲功能。
但是您可以將表資料放入結構物件中。您可以將其保存為 json 或任何格式以供備份參考。
因為,GORM 內部使用 sql。你可以試試這個邏輯。
參考這個鏈接:https : //gist.github.com/xigh/58e138f856bd0946dc748b0f0dc44b02
func main() {
dbSrc := fmt.Sprintf("%s:%s@%s/%s?parseTime=true", *dbUser, *dbPass, *dbHost, *dbName)
db, err := sql.Open("mysql", dbSrc)
if err != nil {
log.Fatalf("sql.Open failed: %v", err)
}
defer db.Close()
// sql.Open() does not establish any connections to the database ...
err = db.Ping()
if err != nil {
log.Fatalf("db.Ping failed: %v", err)
}
tables, err := showTables(db)
if err != nil {
log.Fatalf("showTables failed: %v\n", err)
}
for _, table := range tables {
ds, err := describe(db, table)
if err != nil {
log.Fatalf("describe failed: %v\n", err)
}
fmt.Printf("%s:\n", table)
for _, d := range ds {
fmt.Printf("\t%-20s %s\n", d.Name, d.Type)
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/407542.html
標籤:
上一篇:MySQL查詢性能
