[Go]生成CSV

閱讀時間約 4 分鐘
package main

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

var db *sql.DB

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

var u User

//初始化
func init() {
db, _ = sql.Open("mysql",
"root:a123456@tcp(127.0.0.1:3306)/xxx")
}

func main() {
//設定檔名
filename := "./exportUsers.csv"

//取得數據
users := queryMultiRow()
//定義一個二維數組
column := [][]string{{"手機號碼", "用戶UID", "Email", "用戶名"}}
for _, u := range users {
str := []string{}
str = append(str, u.Phone)
str = append(str, strconv.Itoa(u.Uid))
str = append(str, u.Email)
str = append(str, u.Name)
column = append(column, str)
}
//匯出
ExportCsv(filename, column)
}

//匯出csv文件
func ExportCsv(filePath string, data [][]string) {
fp, err := os.Create(filePath)
if err != nil {
log.Fatalf("建立檔案["+filePath+"]失敗,%v", err)
return
}
defer fp.Close()
//寫入UTF-8 BOM
fp.WriteString("\xEF\xBB\xBF")
//建立一個新的寫入檔案流
w := csv.NewWriter(fp)
w.WriteAll(data)
w.Flush()
}

//查詢多條數據
func queryMultiRow() ([]User) {
rows, err := db.Query("select uid,name,phone,email from `user` where uid > ?", 0)
if err != nil {
fmt.Printf("query failed, err:%v\n", err)
return nil
}
defer rows.Close()

users := []User{}
for rows.Next() {
err := rows.Scan(&u.Uid, &u.Name, &u.Phone, &u.Email)
users = append(users, u)
if err != nil {
fmt.Printf("scan failed, err:%v\n", err)
return nil
}
}
return users
}
avatar-img
8會員
123內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
小黑與程式的邂逅 的其他內容
gRPC是一款跨平台、高性能的RPC框架,他可以在任何環境下執行,主要用於後端為服務開發。在用戶端應用程式中,可以像本地物件那樣呼叫遠端伺服器的方法,因此可以創建出分散式應用。 使用 到https://github.com/protocolbuffers/protobuf/releases下
package main import ( "fmt" "net" "time" ) var ConnSlice map[net.Conn]*Heartbeat type Heartbeat struct { endTime int64 //結束時間 } func main() {
package main import ( "bufio" "fmt" "net" "os" "time" ) func main() { //指定協定 tcpAddr, err := net.ResolveTCPAddr("tcp4", "127.0.0.1:8086") if
Gorm是Go當中一款ORM函數褲,有以下特點: 支持連結 支援鉤子函數Hook 支援預先載入 支援交易 支援複合主鍵 支援SQL生成器 支援資料庫自動遷移 支援自訂日誌 可擴充性 所有功能都被測試覆蓋 安裝 go get -u github.com/jinzhu/gor
下載 go get github.com/gomodule/redigo 連接 package main import ( "fmt" "github.com/gomodule/redigo/redis" ) func main() { c, err := redis.Dial(
Redis被稱為「資料結構伺服器」,因為其中的值(Value)可以是字串(String)、雜湊(Hash)、清單(List)、集合(Set)和有序集合(Sorted Set)等類型。 安裝 下載 wget https://download.redis.io/release/redis-6.
gRPC是一款跨平台、高性能的RPC框架,他可以在任何環境下執行,主要用於後端為服務開發。在用戶端應用程式中,可以像本地物件那樣呼叫遠端伺服器的方法,因此可以創建出分散式應用。 使用 到https://github.com/protocolbuffers/protobuf/releases下
package main import ( "fmt" "net" "time" ) var ConnSlice map[net.Conn]*Heartbeat type Heartbeat struct { endTime int64 //結束時間 } func main() {
package main import ( "bufio" "fmt" "net" "os" "time" ) func main() { //指定協定 tcpAddr, err := net.ResolveTCPAddr("tcp4", "127.0.0.1:8086") if
Gorm是Go當中一款ORM函數褲,有以下特點: 支持連結 支援鉤子函數Hook 支援預先載入 支援交易 支援複合主鍵 支援SQL生成器 支援資料庫自動遷移 支援自訂日誌 可擴充性 所有功能都被測試覆蓋 安裝 go get -u github.com/jinzhu/gor
下載 go get github.com/gomodule/redigo 連接 package main import ( "fmt" "github.com/gomodule/redigo/redis" ) func main() { c, err := redis.Dial(
Redis被稱為「資料結構伺服器」,因為其中的值(Value)可以是字串(String)、雜湊(Hash)、清單(List)、集合(Set)和有序集合(Sorted Set)等類型。 安裝 下載 wget https://download.redis.io/release/redis-6.
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
新賽季新希望,每隻球隊都有自己的中心思想、歡呼口號、應援歌曲,然而不變的最終目標就是贏得年度總冠軍,在那之前所能做的、就是全力以赴,永不退縮。
原本的計畫是寫系列文,一天嗑一點,雖然完整影片約17小時,分批消化卻花了我近10天,現在回去看我第一天寫的草稿,編輯時間已經是半年前...。
親了,然後呢? 過了一兩分鐘姐姐似乎是回神過來,丟下一句妳先不要下車,接著關上我這邊的車門,回到駕駛座,我內心的OS:完了完了巴比Q了༼⁠⁰⁠o⁠⁰⁠;⁠༽ 「明天早上幾點來接妳?」 我???(⁠ʘ⁠ᗩ⁠ʘ) 「妳的機車不是停在公司那?親了我後就忘了?」 『不麻煩主管了,我可以搭計程車或者我
Thumbnail
今年FGO台服終於預計在年底進入2-7,又常常看到很多人說對中南美洲文化不熟, 因此想再把文章統整成一下成更適合作為遊戲補充資料的版本,希望大家在到時遊玩2-7時有更多樂趣。 第一篇基本上是以基礎知識為主,不太會有遊戲劇透。
Thumbnail
之前已經與大家談過讓我第一次挑戰就成功設計出有趣桌遊教具的「GO START」專案管理心法當中的 G、O、S,現在就來繼續分享 T、A、R、T。請容我再次強調,這是人人都適用的專案管理心法,上下兩篇一起看完後,你就會發現要掌握專案管理的要點沒有想像中那麼困難。
喝著shot,苦辣嗆辣令眼淚噴出變得很合理,乾杯這苦悶的日子。 她豪邁的大腿一開坐著喝shot,崇拜過像霹靂嬌娃那樣來個霹靂腿一掃的快感。 這裡不是皇后區,只有跟她從來不熟的算數公式與做人的外星球,又是苦悶的一天過去,她懷念著跳著舞的快樂就那樣子一直跳!跳!跳!哈哈哈的過了每一天的有她存在的意義
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
新賽季新希望,每隻球隊都有自己的中心思想、歡呼口號、應援歌曲,然而不變的最終目標就是贏得年度總冠軍,在那之前所能做的、就是全力以赴,永不退縮。
原本的計畫是寫系列文,一天嗑一點,雖然完整影片約17小時,分批消化卻花了我近10天,現在回去看我第一天寫的草稿,編輯時間已經是半年前...。
親了,然後呢? 過了一兩分鐘姐姐似乎是回神過來,丟下一句妳先不要下車,接著關上我這邊的車門,回到駕駛座,我內心的OS:完了完了巴比Q了༼⁠⁰⁠o⁠⁰⁠;⁠༽ 「明天早上幾點來接妳?」 我???(⁠ʘ⁠ᗩ⁠ʘ) 「妳的機車不是停在公司那?親了我後就忘了?」 『不麻煩主管了,我可以搭計程車或者我
Thumbnail
今年FGO台服終於預計在年底進入2-7,又常常看到很多人說對中南美洲文化不熟, 因此想再把文章統整成一下成更適合作為遊戲補充資料的版本,希望大家在到時遊玩2-7時有更多樂趣。 第一篇基本上是以基礎知識為主,不太會有遊戲劇透。
Thumbnail
之前已經與大家談過讓我第一次挑戰就成功設計出有趣桌遊教具的「GO START」專案管理心法當中的 G、O、S,現在就來繼續分享 T、A、R、T。請容我再次強調,這是人人都適用的專案管理心法,上下兩篇一起看完後,你就會發現要掌握專案管理的要點沒有想像中那麼困難。
喝著shot,苦辣嗆辣令眼淚噴出變得很合理,乾杯這苦悶的日子。 她豪邁的大腿一開坐著喝shot,崇拜過像霹靂嬌娃那樣來個霹靂腿一掃的快感。 這裡不是皇后區,只有跟她從來不熟的算數公式與做人的外星球,又是苦悶的一天過去,她懷念著跳著舞的快樂就那樣子一直跳!跳!跳!哈哈哈的過了每一天的有她存在的意義