Closed5

goでcsvを読み込む

bayamasabayamasa

フォーマットはsjis CRLFなのでそれをまずmac環境で作成することから始める

bayamasabayamasa

脱線
go get はdocker内でやる必要がある
いつも忘れるコマンド
docker exec -it {CONTAINER_ID} /bin/bash

bayamasabayamasa

実際読み込み成功した関数

func csvMapping(c *gin.Context) ([]string, error) {
	file, _, err := c.Request.FormFile("csvfile")

	reader := csv.NewReader(transform.NewReader(file, japanese.ShiftJIS.NewDecoder()))
	reader.LazyQuotes = true
	reader.TrimLeadingSpace = true

	var inputDatas []string

	for {
		var oneLine []string
		var csvData []string

		// 行毎のデータ取得してlineに格納
		oneLine, err = reader.Read()

		if err != nil {
			if err == io.EOF {
				break
			} else {
				return nil, err
			}
		}

		//1行から要素を取得
		for _, v := range oneLine {
			csvData = append(csvData, v)
		}

		if len(csvData) != 4 {
			return nil, err
		}

		inputDatas = append(inputDatas,Object{
			data1: csvData[0],
			data2: csvData[1],
			data3: csvData[2],
			data4: csvData[3],
		})
	}

	return inputDatas, nil
}
このスクラップは2021/08/20にクローズされました