csv文件根据指定格式转换

1. 运行环境

go v1.19.3 linux

2. 问题描述?

目前有一个需要,一个csv的文件,一个表头文件。目的是将csv文件根据头文件指定数据格式(mysql数据类型,INTEGET,DATE,DATETIM,FLOAT),生成一个新的csv文件。
思路:

  1. go操作数据库mysql,将csv导入,再导出一个csv, 这样能实现转换,格式也正确,但是这种实现比较重,依赖mysql, 生产环境使用有限制。
  2. 使用第三方库或者组件,能直接在本地完成转换??

思路2 有没有这种库,或者有没有其他更有效的方式?

示例
csv格式

csv文件根据指定格式转换

表头格式(不局限下面的这几种)
INT,DATE,INTEGER,DATE

预期结果:

csv文件根据指定格式转换

讨论数量: 2
goStruct

用内置库就好了

import (
    "encoding/csv"
    "fmt"
    "log"
    "os"
    "time"
)

func main() {
        // 打开csv文件
        f, err := os.Open("data.csv")
        if err != nil {
                log.Fatal(err)
        }
        defer f.Close()

        // 读取csv文件
        r := csv.NewReader(f)
        records, err := r.ReadAll()
        if err != nil {
                log.Fatal(err)
        }

        // 遍历csv文件中的每一行
        for _, record := range records {
                // 将日期字符串转换为time.Time类型
                date, err := time.Parse("2006-01-02", record[0])
                if err != nil {
                        log.Fatal(err)
                }

                // 格式化日期
                fmt.Println(date.Format("02/01/2006"))
        }
}
1年前 评论
yueliangzhishang (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!