2022.09.25  

【Go】csv.gzファイルを展開して読み込む(ローカル)

Go    

ローカルの環境からcsv.gzファイルを展開して読み込む方法のメモ書きです。
まず、下記のようなcsv.gzファイルを実行するgoスクリプトと同じ場所に配置します。

// sample.csv.gz
id,name,age
1,taro,25
2,jiro,20
3,saburo,12

後は下記のコードを実行すれば、読み込みが行えます。

package main

import (
    "compress/gzip"
    "encoding/csv"
    "fmt"
    "io"
    "os"
)

func main() {

    // ファイルをOpenする
    o, err := os.Open("sample.csv.gz")
    // 読み取り時の例外処理
    if err != nil {
        fmt.Println("error")
    }
    // 関数が終了した際に確実に閉じるようにする
    defer o.Close()

    // gzipファイルを展開する
    f, err := gzip.NewReader(o)
    if err != nil {
        fmt.Println("gzipエラー")
        return
    }
    defer func() {
        _ = f.Close()
    }()

    // 展開したgzipファイルをCSVファイルとして読み込む
    r := csv.NewReader(f)

    // csvファイルの中身を読み込
    for {
        record, err := r.Read()
        if err == io.EOF {
            break
        }
        if err != nil {
            fmt.Println("csvエラー")
        }
        fmt.Println(record)
    }
}

実行結果

[id name age]
[1 taro 25]
[2 jiro 20]
[3 saburo 12]
コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信