[go] CSV 파일의 데이터 형식 변환

CSV(Comma-Separated Values) 파일은 텍스트 기반의 데이터 저장 형식으로, 쉼표로 구분된 값들을 포함합니다. 때때로 CSV 파일의 데이터 형식을 다른 형식으로 변환해야 하는 경우가 있습니다. 예를 들어, CSV 파일의 날짜 데이터가 “YYYY-MM-DD” 형식이 아니거나, 숫자 데이터가 소숫점을 가진 형식이 아닌 경우에는 여러 데이터 형식을 변환할 필요가 있습니다.

날짜 데이터 형식 변환하기

CSV 파일에서 날짜 데이터를 다른 형식으로 변환하려면, 보통 다음과 같은 단계를 따릅니다.

  1. CSV 파일 읽기

    package main
    
    import (
    	"encoding/csv"
    	"os"
    )
    
    func main() {
    	file, err := os.Open("data.csv")
    	if err != nil {
    		panic(err)
    	}
    	defer file.Close()
    
    	reader := csv.NewReader(file)
    	records, err := reader.ReadAll()
    	if err != nil {
    		panic(err)
    	}
    }
    
  2. 날짜 데이터 변환

    날짜 데이터를 원하는 형식으로 변환하려면, Go 언어의 time 패키지를 사용합니다. 예를 들어, “2006-01-02” 형식의 날짜 데이터를 “01/02/2006” 형식으로 변환하려면 다음과 같은 방법을 사용합니다.

    import (
        "time"
    )
    
    func formatDate(inputDate string) string {
        t, err := time.Parse("2006-01-02", inputDate)
        if err != nil {
            return "Invalid Date"
        }
        return t.Format("01/02/2006")
    }
    
  3. 변환된 데이터로 CSV 파일 쓰기

    package main
    
    import (
    	"encoding/csv"
    	"os"
    )
    
    func main() {
    	file, err := os.Create("output.csv")
    	if err != nil {
    		panic(err)
     }
    	defer file.Close()
    
    	writer := csv.NewWriter(file)
    	defer writer.Flush()
    
    	var data [][]string
    	// 변환된 데이터를 data에 채움
    
    	err = writer.WriteAll(data)
    	if err != nil {
    		panic(err)
     }
    }
    

숫자 데이터 형식 변환하기

CSV 파일에서 숫자 데이터의 형식을 변환하려면, Go 언어의 strconv 패키지를 사용할 수 있습니다. 예를 들어, 소숫점을 제거하고 정수로 변환하려면 다음과 같은 방법을 사용합니다.

import (
   "strconv"
)

func convertToInteger(inputNumber string) (int, error) {
   floatValue, err := strconv.ParseFloat(inputNumber, 64)
   if err != nil {
      return 0, err
   }
   intValue := int(floatValue)
   return intValue, nil
}

CSV 파일의 데이터 형식을 변환하는 작업은 데이터 처리 과정에서 중요한 부분입니다. Go 언어를 사용하여 적절한 패키지와 기능을 활용하면, 이러한 변환 작업을 쉽게 수행할 수 있습니다.

참고 자료