github.com/snowflakedb/gosnowflake@v1.9.0/cmd/showparam/showparam.go (about)

     1  // Example: Set the session parameter in DSN and verify it
     2  package main
     3  
     4  import (
     5  	"database/sql"
     6  	"flag"
     7  	"fmt"
     8  	"log"
     9  
    10  	sf "github.com/snowflakedb/gosnowflake"
    11  )
    12  
    13  func main() {
    14  	if !flag.Parsed() {
    15  		flag.Parse()
    16  	}
    17  
    18  	cfg, err := sf.GetConfigFromEnv([]*sf.ConfigParam{
    19  		{Name: "Account", EnvName: "SNOWFLAKE_TEST_ACCOUNT", FailOnMissing: true},
    20  		{Name: "User", EnvName: "SNOWFLAKE_TEST_USER", FailOnMissing: true},
    21  		{Name: "Password", EnvName: "SNOWFLAKE_TEST_PASSWORD", FailOnMissing: true},
    22  		{Name: "Host", EnvName: "SNOWFLAKE_TEST_HOST", FailOnMissing: false},
    23  		{Name: "Port", EnvName: "SNOWFLAKE_TEST_PORT", FailOnMissing: false},
    24  		{Name: "Protocol", EnvName: "SNOWFLAKE_TEST_PROTOCOL", FailOnMissing: false},
    25  	})
    26  	if err != nil {
    27  		log.Fatalf("failed to create Config, err: %v", err)
    28  	}
    29  	tmfmt := "MM-DD-YYYY"
    30  	cfg.Params = map[string]*string{
    31  		"TIMESTAMP_OUTPUT_FORMAT": &tmfmt, // session parameter
    32  	}
    33  	dsn, err := sf.DSN(cfg)
    34  	if err != nil {
    35  		log.Fatalf("failed to create DSN from Config: %v, err: %v", cfg, err)
    36  	}
    37  
    38  	db, err := sql.Open("snowflake", dsn)
    39  	if err != nil {
    40  		log.Fatalf("failed to connect. err: %v", err)
    41  	}
    42  	defer db.Close()
    43  	query := "SHOW PARAMETERS LIKE 'TIMESTAMP_OUTPUT_FORMAT'"
    44  	rows, err := db.Query(query) // no cancel is allowed
    45  	if err != nil {
    46  		log.Fatalf("failed to run a query. %v, err: %v", query, err)
    47  	}
    48  	defer rows.Close()
    49  
    50  	for rows.Next() {
    51  		p, err := sf.ScanSnowflakeParameter(rows)
    52  		if err != nil {
    53  			log.Fatalf("failed to get result. err: %v", err)
    54  		}
    55  		if p.Key != "TIMESTAMP_OUTPUT_FORMAT" {
    56  			log.Fatalf("failed to get TIMESTAMP_. got: %v", p.Value)
    57  		}
    58  		fmt.Printf("fmt: %v\n", p.Value)
    59  	}
    60  	if rows.Err() != nil {
    61  		fmt.Printf("ERROR: %v\n", rows.Err())
    62  		return
    63  	}
    64  	fmt.Printf("Congrats! You have successfully run %v with Snowflake DB!\n", query)
    65  }