代码拉取完成,页面将自动刷新
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")
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。