Go Client

Prev Next

VPC 환경에서 이용 가능합니다.

Data Query에서 제공하는 Go Client 사용 방법을 설명합니다.

준비 사항

Go Client를 사용할 환경에 Go 1.22 이상이 설치되어 있어야 합니다.

사용 방법

Data Query Go Client 사용 방법을 설명합니다.

1. 패키지 설치

pkg.go.dev 에 공개되어 있는 dataquery-go-client 패키지를 설치합니다.

go get github.com/NaverCloudPlatform/dataquery-go-client

2. Go Client 연동 예시

인증 방식

NCP IAM 인증 방식을 지원합니다.
DSN 문자열에 사용자의 AccessKey 및 SecretKey 입력이 필요합니다.

쿼리 제출 및 결과 확인

코드를 작성하여 쿼리를 제출하고 결과를 확인합니다.

<예시>

package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/NaverCloudPlatform/dataquery-go-client/trino"
)

func main() {

    accessKey := "_your_access_key_"
    secretKey := "_your_secret_key_"
    endpoint  := "_dataquery_endpoint_"

    dsn := fmt.Sprintf("https://%s:%s@%s?catalog=data_catalog&schema=default", accessKey, secretKey, endpoint)
    db, err := sql.Open("dataquery", dsn)

    if err != nil {
        log.Fatalf("Failed to connect to DataQuery: %v", err)
    }
    defer db.Close()

    if err := db.Ping(); err != nil {
        log.Fatalf("Ping failed: %v", err)
    }

    query := "SELECT * FROM public_data.korea_national_railway.subway_seoul_capital_area LIMIT 10"
    rows, err := db.Query(query)
    if err != nil {
        log.Fatalf("Query failed: %v", err)
    }
    defer rows.Close()

    columns, err := rows.Columns()
    if err != nil {
        log.Fatalf("Failed to get columns: %v", err)
    }
    for rows.Next() {
        values := make([]interface{}, len(columns))
        valuePtrs := make([]interface{}, len(columns))
        for i := range values {
            valuePtrs[i] = &values[i]
        }
        if err := rows.Scan(valuePtrs...); err != nil {
            log.Fatalf("Failed to scan row: %v", err)
        }
        for i := range columns {
            val := values[i]
            if b, ok := val.([]byte); ok {
                fmt.Print(string(b))
            } else {
                fmt.Print(val)
            }
            if i < len(columns)-1 {
                fmt.Print(" ")
            }
        }
        fmt.Println()
    }
}
// 결과 예시
코레일 경강 판교(판교테크노밸리) 127.111135 37.394798
코레일 경강 이매 127.128272 37.395846
코레일 경강 삼동 127.203279 37.408654
코레일 경강 경기광주 127.253201 37.398974
코레일 경강 초월 127.299996 37.373389
코레일 경강 곤지암 127.346193 37.350518
코레일 경강 신둔도예촌 127.405251 37.315499
코레일 경강 이천 127.442135 37.264222
코레일 경강 부발 127.490303 37.260411
코레일 경강 세종대왕릉 127.570764 37.293636

사용 가능한 옵션

  • DSN 문자열의 인자값으로 입력합니다.
  • (예시)
    https://_accessKey_:_secretKey_@_endpoint_?catalog=data_catalog&schema=default&reuse_query_result=true&reuse_query_max_age=10
옵션명 데이터 타입 입력값 필수 여부 비고
accessKey String 사용자 accessKey Y
secretKey String 사용자 secretKey Y
endpoint String Data Query Endpoint Y 리전별 Data Query Service Endpoint 참고
reuse_query_result Boolean true 또는 false N * default : false
reuse_query_max_age Integer 1 ~ 10,080 N * default : 60
* reuse-query-result 값이 true 인 경우에만 사용됩니다. (단위: 분)

리전별 Data Query Service Endpoint
현재 KR 리전만 사용 가능하며, 리전 확대 예정입니다.

리전 Endpoint
KR kr.dataquery.naverncp.com
참고

dataquery-go-client는 trino-go-client를 기반으로 제공합니다. 위 안내된 옵션 외 추가 내용은 Trino 문서를 참조해 주십시오.