亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 CSV 解組為結構,然后導入

將 CSV 解組為結構,然后導入

Go
MMMHUHU 2023-07-31 16:13:48
我正在努力學習Go。我正在努力將 CSV 記錄解組到結構中,以便我可以創建插入并將這些數據導入到我的數據庫中。我正在尋找一種自動化編組的方法,其方式與編碼類似當我運行 main 時,我收到一個錯誤panic: strconv.ParseInt: parsing "id": invalid syntax我寫了一些代碼,應該將我的 .csv 記錄解組為結構體func Unmarshal(reader *csv.Reader, v interface{}) error {    record, err := reader.Read()    if err != nil {        return err    }    s := reflect.ValueOf(v).Elem()    if s.NumField() != len(record) {        return &FieldMismatch{s.NumField(), len(record)}    }    for i := 0; i < s.NumField(); i++ {        f := s.Field(i)        switch f.Type().String() {        case "string":            f.SetString(record[i])        case "int":            ival, err := strconv.ParseInt(record[i], 10, 0)            if err != nil {                return err            }            f.SetInt(ival)        default:            return &UnsupportedType{f.Type().String()}        }    }    return nil}我在另一個文件中創建了這個結構:type InsertToDatabase struct {    ID         int `csv:"id"`    groupId    int `csv:"group_id"`    Name    string `csv:"name"`    Status int `csv:"status"`}當 main 運行時,它應該運行這段代碼,然后解析我的 .csv 文件以創建插入,然后在我的本地數據庫上運行。var InsertTest InsertToDatabase    reader := csv.NewReader(file)    for {        err := Unmarshal(reader, &InsertTest)        if err == io.EOF {            break        }        if err != nil {            panic(err)        }        channel <- InsertTest    }}有沒有辦法提高這段代碼的可讀性?另外,我應該循環并調用.Read一次處理一行嗎?
查看完整描述

1 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

當我運行 main 時,我收到一個錯誤

恐慌:strconv.ParseInt:解析“id”:語法無效

我猜你是無意中解析了 CSV 文件的標題行。


查看完整回答
反對 回復 2023-07-31
  • 1 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號