使用csv.Writer输出MySQL数据可以通过以下步骤实现:
以下是一个示例代码,演示了如何使用csv.Writer输出MySQL数据:
package main
import (
"database/sql"
"encoding/csv"
"fmt"
"log"
"os"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 连接到MySQL数据库
db, err := sql.Open("mysql", "username:password@tcp(hostname:port)/database")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 执行SQL查询
rows, err := db.Query("SELECT * FROM table")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
// 创建CSV文件
file, err := os.Create("output.csv")
if err != nil {
log.Fatal(err)
}
defer file.Close()
// 创建csv.Writer
writer := csv.NewWriter(file)
// 写入CSV文件头部
columns, err := rows.Columns()
if err != nil {
log.Fatal(err)
}
writer.Write(columns)
// 写入查询结果
values := make([]sql.RawBytes, len(columns))
scanArgs := make([]interface{}, len(values))
for i := range values {
scanArgs[i] = &values[i]
}
for rows.Next() {
err := rows.Scan(scanArgs...)
if err != nil {
log.Fatal(err)
}
var record []string
for _, value := range values {
record = append(record, string(value))
}
writer.Write(record)
}
// 关闭CSV文件
writer.Flush()
if err := writer.Error(); err != nil {
log.Fatal(err)
}
fmt.Println("CSV文件已生成")
}
请注意,上述示例代码中的连接信息需要根据实际情况进行修改,包括用户名、密码、主机名、端口和数据库名。另外,还需要根据实际情况修改SQL查询语句和输出文件名。
推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云对象存储COS。
腾讯云数据库MySQL产品介绍链接地址:https://cloud.tencent.com/product/cdb
腾讯云对象存储COS产品介绍链接地址:https://cloud.tencent.com/product/cos
领取专属 10元无门槛券
手把手带您无忧上云