This repo contains a Databricks SQL Driver for Go's database/sql package. It can be used to connect and query Databricks clusters and SQL Warehouses.
See doc.go
for full documentation or the Databrick's documentation for SQL Driver for Go.
import (
"context"
"database/sql"
_ "github.com/databricks/databricks-sql-go"
)
db, err := sql.Open("databricks", "token:********@********.databricks.com:443/sql/1.0/endpoints/********")
if err != nil {
panic(err)
}
defer db.Close()
rows, err := db.QueryContext(context.Background(), "SELECT 1")
defer rows.Close()
Additional usage examples are available here.
The DSN format is:
token:[your token]@[Workspace hostname]:[Port number][Endpoint HTTP Path]?param=value
You can set query timeout value by appending a timeout
query parameter (in seconds) and you can set max rows to retrieve per network request by setting the maxRows
query parameter:
token:[your token]@[Workspace hostname]:[Port number][Endpoint HTTP Path]?timeout=1000&maxRows=1000
You can also connect with a new connector object. For example:
import (
"database/sql"
_ "github.com/databricks/databricks-sql-go"
)
connector, err := dbsql.NewConnector(
dbsql.WithServerHostname(<Workspace hostname>),
dbsql.WithPort(<Port number>),
dbsql.WithHTTPPath(<Endpoint HTTP Path>),
dbsql.WithAccessToken(<your token>)
)
if err != nil {
log.Fatal(err)
}
db := sql.OpenDB(connector)
defer db.Close()
View doc.go
or connector.go
to understand all the functional options available when creating a new connector object.
We use golangci-lint
as the lint tool. If you use vs code, just add the following settings:
{
"go.lintTool": "golangci-lint",
"go.lintFlags": [
"--fast"
]
}
go test
If you find any issues, feel free to create an issue or send a pull request directly.
See CONTRIBUTING.md