golang 테이블 쿼리시 필요없는 컬럼은 빼고 가져오기
golang 에서 데이터베이스의 테이블 데이터를 가져올 때, Scan을 사용하면서 작성한 쿼리 결과의 컬럼 수 만큼 변수를 지정해서 가져와야 하는데,
필요없는 컬럼(당장 쓸일이 없지만, 혹시 몰라 넣어두는 작성일이나 갱신일 같은 컬럼)의 데이터는 빼고 가져오는 방법이 있어서 여기에 올려둔다.
필요한 컬럼만 쿼리하면 되는데 왜 이런걸 쓰냐…할 수도 있는데,
컬럼 수가 많으면 select * 으로 해버리는게 편하고, 컬럼 이름 일일이 쓰는게 귀찮기도 하니까 그렇다.
바로 테스트할 수 있도록 소스코드를 다 올리지만, Scan 부분과 TrashScanner 만 보면 된다.
참고글: database/sql の Rows.Scan で不要なカラムデータを読み捨てる – https://qiita.com/wanko/items/2e6b5dd4867adaa24ec6
일본어다.
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
func main() {
db, err := sql.Open("postgres", "postgres://postuser:8e3%23%2AjXq_p,E@192.168.0.3:5432/postdb")
if err != nil {
panic(err)
}
rows, err := db.Query("select * from test.tb_test")
if err != nil {
panic(err)
}
var es []testTable
for rows.Next() {
var e testTable
err = rows.Scan(&e.num, &e.title, TrashScanner{}, TrashScanner{})
if err != nil {
panic(err)
}
es = append(es, e)
}
fmt.Printf("%v", es)
}
type testTable struct {
num int
title string
}
type TrashScanner struct{}
func (TrashScanner) Scan(interface{}) error {
return nil
}