Go athena
Golang database/sql driver for AWS Athena
go-athena is a simple Golang [database/sql] driver for [Amazon Athena](https://aws.amazon.com/athena/). The project is written primarily in Go, distributed under the MIT License license, first published in 2017. Key topics include: athena, aws-athena, golang.
go-athena
go-athena is a simple Golang database/sql driver for Amazon Athena.
goimport ( "database/sql" _ "github.com/segmentio/go-athena" ) func main() { db, _ := sql.Open("athena", "db=default&output_location=s3://results") rows, _ := db.Query("SELECT url, code from cloudfront") for rows.Next() { var url string var code int rows.Scan(&url, &code) } }
It provides a higher-level, idiomatic wrapper over the
AWS Go SDK,
comparable to the Athena JDBC driver
AWS provides for Java users.
For example,
- Instead of manually parsing types from strings, you can use database/sql.Rows.Scan()
- Instead of reaching for semaphores, you can use database/sql.DB.SetMaxOpenConns
- And, so on...
Caveats
database/sql exposes lots of methods that aren't supported in Athena.
For example, Athena doesn't support transactions so Begin() is irrelevant.
If a method must be supplied to satisfy a standard library interface but is unsupported,
the driver will panic indicating so. If there are new offerings in Athena and/or
helpful additions, feel free to PR.
Testing
Athena doesn't have a local version and revolves around S3 so our tests are
integration tests against AWS itself. Thus, our tests require AWS credentials.
The simplest way to provide them is via AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
environment variables, but you can use anything supported by the
Default Credential Provider Chain.
The tests support a few environment variables:
ATHENA_DATABASEcan be used to override the default database "go_athena_tests"S3_BUCKETcan be used to override the default S3 bucket of "go-athena-tests"
Contributors
Showing top 8 contributors by commit count.
