1 Star 0 Fork 0

yanpin-dev / aliyun-oss-go-sdk

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
select_object.go 4.81 KB
一键复制 编辑 原始数据 按行查看 历史
package sample
import (
"fmt"
"io/ioutil"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
// SelectObjectSample shows how to get data from csv/json object by sql
func SelectObjectSample() {
// Create a bucket
bucket, err := GetTestBucket(bucketName)
if err != nil {
HandleError(err)
}
//
// Create a Csv object
//
err = bucket.PutObjectFromFile(objectKey, localCsvFile)
if err != nil {
HandleError(err)
}
// Create Csv Meta
csvMeta := oss.CsvMetaRequest{}
ret, err := bucket.CreateSelectCsvObjectMeta(objectKey, csvMeta)
if err != nil {
HandleError(err)
}
fmt.Println("csv file meta:", ret)
// case 1: Isn't NULL
selReq := oss.SelectRequest{}
selReq.Expression = "select Year, StateAbbr, CityName, PopulationCount from ossobject where CityName != ''"
selReq.InputSerializationSelect.CsvBodyInput.FileHeaderInfo = "Use"
body, err := bucket.SelectObject(objectKey, selReq)
if err != nil {
HandleError(err)
}
defer body.Close()
databyte, err := ioutil.ReadAll(body)
if err != nil {
HandleError(err)
}
fmt.Println("some data in SelectCSVObject result:", string(databyte[:9]))
// case 2: Like
selReq = oss.SelectRequest{}
selReq.Expression = "select Year, StateAbbr, CityName, Short_Question_Text from ossobject where Measure like '%blood pressure%Years'"
selReq.InputSerializationSelect.CsvBodyInput.FileHeaderInfo = "Use"
body, err = bucket.SelectObject(objectKey, selReq)
if err != nil {
HandleError(err)
}
defer body.Close()
databyte, err = ioutil.ReadAll(body)
if err != nil {
HandleError(err)
}
fmt.Println("some data in SelectCSVObject result:", string(databyte[:9]))
// delete object
err = bucket.DeleteObject(objectKey)
if err != nil {
HandleError(err)
}
//
// Create a LINES json object
//
err = bucket.PutObjectFromFile(objectKey, localJSONLinesFile)
if err != nil {
HandleError(err)
}
// Create LINES JSON Meta
jsonMeta := oss.JsonMetaRequest{
InputSerialization: oss.InputSerialization {
JSON: oss.JSON {
JSONType:"LINES",
},
},
}
restSt, err := bucket.CreateSelectJsonObjectMeta(objectKey, jsonMeta)
if err != nil {
HandleError(err)
}
fmt.Println("csv json meta:", restSt)
// case 1: sql where A=B
selReq = oss.SelectRequest{}
selReq.Expression = "select * from ossobject where party = 'Democrat'"
selReq.OutputSerializationSelect.JsonBodyOutput.RecordDelimiter = ","
selReq.InputSerializationSelect.JsonBodyInput.JSONType = "LINES"
body, err = bucket.SelectObject(objectKey, selReq)
if err != nil {
HandleError(err)
}
defer body.Close()
databyte, err = ioutil.ReadAll(body)
if err != nil {
HandleError(err)
}
fmt.Println("some data in SelectJsonObject result:", string(databyte[:9]))
// case 2: LIKE
selReq = oss.SelectRequest{}
selReq.Expression = "select person.firstname, person.lastname from ossobject where person.birthday like '1959%'"
selReq.OutputSerializationSelect.JsonBodyOutput.RecordDelimiter = ","
selReq.InputSerializationSelect.JsonBodyInput.JSONType = "LINES"
body, err = bucket.SelectObject(objectKey, selReq)
if err != nil {
HandleError(err)
}
defer body.Close()
databyte, err = ioutil.ReadAll(body)
if err != nil {
HandleError(err)
}
fmt.Println("some data in SelectJsonObject result:", string(databyte[:9]))
// delete object
err = bucket.DeleteObject(objectKey)
if err != nil {
HandleError(err)
}
//
// Create a Document json object
//
err = bucket.PutObjectFromFile(objectKey, localJSONFile)
if err != nil {
HandleError(err)
}
// case 1: int avg, max, min
selReq = oss.SelectRequest{}
selReq.Expression = `
select
avg(cast(person.cspanid as int)), max(cast(person.cspanid as int)),
min(cast(person.cspanid as int))
from
ossobject.objects[*]
where
person.cspanid = 1011723
`
selReq.OutputSerializationSelect.JsonBodyOutput.RecordDelimiter = ","
selReq.InputSerializationSelect.JsonBodyInput.JSONType = "Document"
body, err = bucket.SelectObject(objectKey, selReq)
if err != nil {
HandleError(err)
}
defer body.Close()
databyte, err = ioutil.ReadAll(body)
if err != nil {
HandleError(err)
}
fmt.Println("data:", string(databyte))
// case 2: Concat
selReq = oss.SelectRequest{}
selReq.Expression = `
select
person
from
ossobject.objects[*]
where
(person.firstname || person.lastname) = 'JohnKennedy'
`
selReq.OutputSerializationSelect.JsonBodyOutput.RecordDelimiter = ","
selReq.InputSerializationSelect.JsonBodyInput.JSONType = "Document"
body, err = bucket.SelectObject(objectKey, selReq)
if err != nil {
HandleError(err)
}
defer body.Close()
databyte, err = ioutil.ReadAll(body)
if err != nil {
HandleError(err)
}
fmt.Println("some data in SelectJsonObject result:", string(databyte[:9]))
// Delete the object and bucket
err = DeleteTestBucketAndObject(bucketName)
if err != nil {
HandleError(err)
}
fmt.Println("SelectObjectSample completed")
}
Go
1
https://gitee.com/yanpin-dev/aliyun-oss-go-sdk.git
git@gitee.com:yanpin-dev/aliyun-oss-go-sdk.git
yanpin-dev
aliyun-oss-go-sdk
aliyun-oss-go-sdk
v2.1.8

搜索帮助