golang 에서 데이터베이스의 테이블 데이터를 가져올 때, Scan을 사용하면서 작성한 쿼리 결과의 컬럼 수 만큼 변수를 지정해서 가져와야 하는데,
필요없는 컬럼(당장 쓸일이 없지만, 혹시 몰라 넣어두는 작성일이나 갱신일 같은 컬럼)의 데이터는 빼고 가져오는 방법이 있어서 여기에 올려둔다.
필요한 컬럼만 쿼리하면 되는데 왜 이런걸 쓰냐…할 수도 있는데,
컬럼 수가 많으면 select * 으로 해버리는게 편하고, 컬럼 이름 일일이 쓰는게 귀찮기도 하니까 그렇다.
바로 테스트할 수 있도록 소스코드를 다 올리지만, Scan 부분과 TrashScanner 만 보면 된다.
참고글: database/sql の Rows.Scan で不要なカラムデータを読み捨てる – https://qiita.com/wanko/items/2e6b5dd4867adaa24ec6
일본어다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
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 } |