Go語言是一種非常流行的編程語言,它在連接MySQL數據庫并將查詢結果轉換為JSON文件方面也非常強大。要實現這個目標,我們需要安裝GitHub上提供的go-sql-driver / mysql包。該包提供了Go語言連接MySQL的基本函數庫。
在連接數據庫之后,我們可以使用sql.Query函數執行SQL查詢并以行的形式將結果返回。對于每一行,我們可以構建一個JSON對象來容納數據。使用encoding / json包,我們可以將此對象編碼為JSON格式并將其寫入文件。
import (
"database/sql"
"encoding/json"
"fmt"
_ "github.com/go-sql-driver/mysql"
"os"
)
type Data struct {
Column1 string `json:"column1"`
Column2 string `json:"column2"`
Column3 string `json:"column3"`
}
func main() {
db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/databasename")
if err != nil {
panic(err.Error())
}
defer db.Close()
rows, err := db.Query("SELECT column1, column2, column3 FROM tablename")
if err != nil {
panic(err.Error())
}
defer rows.Close()
var jsonData []Data
for rows.Next() {
var column1, column2, column3 string
err := rows.Scan(&column1, &column2, &column3)
if err != nil {
panic(err.Error())
}
data := Data{column1, column2, column3}
jsonData = append(jsonData, data)
}
file, err := os.Create("output.json")
if err != nil {
panic(err.Error())
}
defer file.Close()
encoder := json.NewEncoder(file)
encoder.SetIndent("", "\t")
err = encoder.Encode(jsonData)
if err != nil {
panic(err.Error())
}
fmt.Println("JSON data written to output.json")
}
在上面的示例代碼中,我們定義了一個名為Data的結構體,它表示MySQL表的每一行。我們連接到數據庫并選擇所有行,對于每一行,我們存儲數據并將其添加到jsonData切片中。最后,我們將結果編碼為JSON并將其寫入名為output.json的文件中。
下一篇go讀寫json