// Example from: http://www.easysoft.com/support/kb/kb01045.html
package main
import (
_ "code.google.com/p/odbc"
"database/sql"
"fmt"
"log"
)
var (
driver string
server string
dbc string
port string
user string
pwd string
DSN string
)
func prepConnString() {
/* Connection String parameters */
driver = "{Vertica}" /* This is the ODBC driver name, when you installed it */
server = "blablabla.com" /* Server address */
dbc = "database_name" /* Name of database in Vertica */
port = "1234" /* Port number */
user = "" /* user login : you should do in a safer way ! */
pwd = "" /* user password : you should do in a safer way ! */
DSN = "Driver=" + driver + ";Servername=" + server + ";Database=" + dbc + ";Port=" + port + ";uid=" + user + ";pwd=" + pwd + ";"
fmt.Printf("DSN (connection string) : %s\n", DSN)
}
func main() {
prepConnString()
var db *sql.DB
var err error
db, err = sql.Open("odbc", DSN)
if err != nil {
log.Fatal(err)
}
// Var for each column to be retrieved by query
var (
col1 string
col2 string
)
// QUERY
rows, err := db.Query("SELECT column1,column2 FROM schema_name.table_name WHERE columnX = ? LIMIT 10", "whatever")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
// Read results (line per line)
for rows.Next() {
err := rows.Scan(&col1, &col2)
if err != nil {
log.Fatal(err)
}
log.Println(col1, col2)
}
err = rows.Err()
if err != nil {
log.Fatal(err)
}
defer db.Close()
}