github.com/snowflakedb/gosnowflake@v1.9.0/cmd/keypair/keypair.go (about) 1 // Example: Authenticate with Keypair. 2 // Prerequisite: Follow the steps to set up a keypair - https://docs.snowflake.com/en/user-guide/key-pair-auth.html#configuring-key-pair-authentication 3 4 package main 5 6 import ( 7 "database/sql" 8 "flag" 9 "fmt" 10 "log" 11 12 sf "github.com/snowflakedb/gosnowflake" 13 ) 14 15 func main() { 16 if !flag.Parsed() { 17 flag.Parse() 18 } 19 20 cfg, err := sf.GetConfigFromEnv([]*sf.ConfigParam{ 21 {Name: "Account", EnvName: "SNOWFLAKE_TEST_ACCOUNT", FailOnMissing: true}, 22 {Name: "User", EnvName: "SNOWFLAKE_TEST_USER", FailOnMissing: true}, 23 {Name: "Host", EnvName: "SNOWFLAKE_TEST_HOST", FailOnMissing: false}, 24 {Name: "Port", EnvName: "SNOWFLAKE_TEST_PORT", FailOnMissing: false}, 25 {Name: "Protocol", EnvName: "SNOWFLAKE_TEST_PROTOCOL", FailOnMissing: false}, 26 {Name: "PrivateKey", EnvName: "SNOWFLAKE_TEST_PRIVATE_KEY", FailOnMissing: true}, 27 }) 28 if err != nil { 29 log.Fatalf("failed to create Config, err: %v", err) 30 } 31 cfg.Authenticator = sf.AuthTypeJwt 32 dsn, err := sf.DSN(cfg) 33 if err != nil { 34 log.Fatalf("failed to create DSN from Config: %v, err: %v", cfg, err) 35 } 36 37 db, err := sql.Open("snowflake", dsn) 38 if err != nil { 39 log.Fatalf("failed to connect. %v, err: %v", dsn, err) 40 } 41 defer db.Close() 42 query := "SELECT 1" 43 rows, err := db.Query(query) // no cancel is allowed 44 if err != nil { 45 log.Fatalf("failed to run a query. %v, err: %v", query, err) 46 } 47 defer rows.Close() 48 var v int 49 for rows.Next() { 50 err := rows.Scan(&v) 51 if err != nil { 52 log.Fatalf("failed to get result. err: %v", err) 53 } 54 if v != 1 { 55 log.Fatalf("failed to get 1. got: %v", v) 56 } 57 } 58 if rows.Err() != nil { 59 fmt.Printf("ERROR: %v\n", rows.Err()) 60 return 61 } 62 fmt.Printf("Congrats! You have successfully run %v with Snowflake DB!\n", query) 63 }