https://github.com/sql-machine-learning/gomaxcompute
A Go driver for MaxCompute.
https://github.com/sql-machine-learning/gomaxcompute
Last synced: 8 months ago
JSON representation
A Go driver for MaxCompute.
- Host: GitHub
- URL: https://github.com/sql-machine-learning/gomaxcompute
- Owner: sql-machine-learning
- Created: 2019-04-15T14:02:39.000Z (over 6 years ago)
- Default Branch: develop
- Last Pushed: 2021-09-18T08:16:09.000Z (over 4 years ago)
- Last Synced: 2024-06-18T15:29:32.875Z (over 1 year ago)
- Language: Go
- Homepage:
- Size: 57.6 KB
- Stars: 41
- Watchers: 13
- Forks: 11
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MaxCompute Go Driver
[](https://travis-ci.org/sql-machine-learning/gomaxcompute) [](https://godoc.org/github.com/sql-machine-learning/gomaxcompute) [](LICENSE)
[MaxCompute](https://www.alibabacloud.com/product/maxcompute), also known as ODPS, is a distributed storage service and SQL engine provided by [Alibaba Cloud](https://www.alibabacloud.com/). This repository contains a Go [SQLDriver](https://github.com/golang/go/wiki/SQLDrivers) of MaxCompute. If you are going to write a Go program that calls the standard library `database/sql` to access MaxCompute databases, you could use this driver.
This project is in its early stage. Your issues and pull requests are very welcome!
## What This Is and Isn't
This project is a driver that helps Go's standard database API talking to MaxCompute server. It has the following features:
- In pure Go. Not a wrapper of any C/C++ library.
- Connect to MaxCompute through its [HTTP interface](http://repo.aliyun.com/api-doc/).
- Improve I/O throughput using MaxCompute's [tunnel service](https://www.alibabacloud.com/help/doc-detail/27833.htm).
Alibaba Cloud open sourced some client SDKs of MaxCompute:
- Java: https://github.com/aliyun/aliyun-odps-java-sdk
- Python: https://github.com/aliyun/aliyun-odps-python-sdk
This project is not an SDK.
Alibaba Cloud also provides ODBC/JDBC drivers:
- https://github.com/aliyun/aliyun-odps-jdbc
This project is a Go's `database/sql` driver.
## How to Use
Please make sure you have Go 1.6 or high release.
You can clone the source code by running the following command.
```go
go get -u sqlflow.org/gomaxcompute
```
Here is a simple example:
```go
package main
import (
"database/sql"
"sqlflow.org/gomaxcompute"
)
func assertNoError(e error) {
if e != nil {
panic(e)
}
}
func main() {
config := gomaxcompute.Config{
AccessID: "",
AccessKey: "",
Endpoint: "",
Project: ""}
db, e := sql.Open("maxcompute", config.FormatDSN())
assertNoError(e)
defer db.Close()
const sql = `SELECT
cast('1' AS BIGINT) AS a,
cast(TRUE AS BOOLEAN) AS b,
cast('hi' AS STRING) AS c,
cast('3.14' AS DOUBLE) AS d,
cast('2017-11-11 03:12:11' AS DATETIME) AS e,
cast('100.01' AS DECIMAL) AS f;`
rows, e := db.Query(sql)
assertNoError(e)
defer rows.Close()
for rows.Next() {
// do your stuff
}
}
```
Please be aware that to connect to a MaxCompute database, the user needs to provide
1. the access ID
1. the access key
1. the endpoint pointing to the MaxCompute service
1. a project, which is something similar to a database in MySQL.
## Acknowledgement
Our respect and thanks to Ruohang Feng, who wrote a Go SDK for MaxCompute when he worked in Alibaba, for his warm help that enabled this project.