Go语言从数据库中导出csv文件

仅展示从数据库中导出csv文件代码,相关知识详见早期文章:https://www.nowcoder.com/discuss/499739474956394496?sourceSSR=users

数据库中user表信息:

import (
	"database/sql"
	"encoding/csv"
	_ "github.com/go-sql-driver/mysql"
	"log"
	"os"
	"strconv"
)

type User struct {
	Uid      int
	Name     string
	Phone    string
	Email    string
}

func querySql() []User {
	db, err := sql.Open("mysql", "root:******@tcp(192.168.8.132:3306)/goTest")
	if err != nil {
		log.Fatalf("open sql server failed. %v\n", err)
		return nil
	}
	defer db.Close()

	rows, err := db.Query("select uid, name, phone, email from user where uid > ?", 0)
	if err != nil {
		log.Fatalf("query sql failed, %v\n", err)
		return nil
	}
	defer rows.Close()

	var u User
	var users []User
	for rows.Next() {
		err := rows.Scan(&u.Uid, &u.Name, &u.Phone, &u.Email)
		users = append(users, u)
		if err != nil {
			log.Fatalf("scan failed, %v\n", err)
			return nil
		}
	}
	return users
}

func writeCsv(fileName string, data [][]string) {
	fp, err := os.Create(fileName)
	if err != nil {
		log.Fatalf("create file failed, %v\n", err)
	}

	writer := csv.NewWriter(fp)
	writer.WriteAll(data)
	writer.Flush()
}

func main() {
	fileName := "exportUser.csv"
	users := querySql()
	mainSlice := [][]string{{
		"uid", "name", "phone", "email",
	}}

	for _, u := range users {
		var subSlice []string
		subSlice = append(subSlice, strconv.Itoa(u.Uid))
		subSlice = append(subSlice, u.Name)
		subSlice = append(subSlice, u.Phone)
		subSlice = append(subSlice, u.Email)
		mainSlice = append(mainSlice, subSlice)
	}

	writeCsv(fileName, mainSlice)
}

运行结果:

全部评论

相关推荐

2024-12-26 13:00
太原理工大学 Java
会飞的猿:简历没啥大问题啊,感觉是缺少了实习经历。多投投先找个中小厂过渡一下吧
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务