7 "github.com/aliyun/aliyun-oss-go-sdk/oss"
10 // SelectObjectSample shows how to get data from csv/json object by sql
11 func SelectObjectSample() {
13 bucket, err := GetTestBucket(bucketName)
19 // Create a Csv object
21 err = bucket.PutObjectFromFile(objectKey, localCsvFile)
27 csvMeta := oss.CsvMetaRequest{}
28 ret, err := bucket.CreateSelectCsvObjectMeta(objectKey, csvMeta)
32 fmt.Println("csv file meta:", ret)
35 selReq := oss.SelectRequest{}
36 selReq.Expression = "select Year, StateAbbr, CityName, PopulationCount from ossobject where CityName != ''"
37 selReq.InputSerializationSelect.CsvBodyInput.FileHeaderInfo = "Use"
39 body, err := bucket.SelectObject(objectKey, selReq)
45 databyte, err := ioutil.ReadAll(body)
49 fmt.Println("some data in SelectCSVObject result:", string(databyte[:9]))
52 selReq = oss.SelectRequest{}
53 selReq.Expression = "select Year, StateAbbr, CityName, Short_Question_Text from ossobject where Measure like '%blood pressure%Years'"
54 selReq.InputSerializationSelect.CsvBodyInput.FileHeaderInfo = "Use"
55 body, err = bucket.SelectObject(objectKey, selReq)
61 databyte, err = ioutil.ReadAll(body)
65 fmt.Println("some data in SelectCSVObject result:", string(databyte[:9]))
68 err = bucket.DeleteObject(objectKey)
74 // Create a LINES json object
76 err = bucket.PutObjectFromFile(objectKey, localJSONLinesFile)
81 // Create LINES JSON Meta
82 jsonMeta := oss.JsonMetaRequest{
83 InputSerialization: oss.InputSerialization {
89 restSt, err := bucket.CreateSelectJsonObjectMeta(objectKey, jsonMeta)
93 fmt.Println("csv json meta:", restSt)
95 // case 1: sql where A=B
96 selReq = oss.SelectRequest{}
97 selReq.Expression = "select * from ossobject where party = 'Democrat'"
98 selReq.OutputSerializationSelect.JsonBodyOutput.RecordDelimiter = ","
99 selReq.InputSerializationSelect.JsonBodyInput.JSONType = "LINES"
101 body, err = bucket.SelectObject(objectKey, selReq)
107 databyte, err = ioutil.ReadAll(body)
111 fmt.Println("some data in SelectJsonObject result:", string(databyte[:9]))
114 selReq = oss.SelectRequest{}
115 selReq.Expression = "select person.firstname, person.lastname from ossobject where person.birthday like '1959%'"
116 selReq.OutputSerializationSelect.JsonBodyOutput.RecordDelimiter = ","
117 selReq.InputSerializationSelect.JsonBodyInput.JSONType = "LINES"
119 body, err = bucket.SelectObject(objectKey, selReq)
125 databyte, err = ioutil.ReadAll(body)
129 fmt.Println("some data in SelectJsonObject result:", string(databyte[:9]))
132 err = bucket.DeleteObject(objectKey)
138 // Create a Document json object
140 err = bucket.PutObjectFromFile(objectKey, localJSONFile)
145 // case 1: int avg, max, min
146 selReq = oss.SelectRequest{}
147 selReq.Expression = `
149 avg(cast(person.cspanid as int)), max(cast(person.cspanid as int)),
150 min(cast(person.cspanid as int))
154 person.cspanid = 1011723
156 selReq.OutputSerializationSelect.JsonBodyOutput.RecordDelimiter = ","
157 selReq.InputSerializationSelect.JsonBodyInput.JSONType = "Document"
159 body, err = bucket.SelectObject(objectKey, selReq)
165 databyte, err = ioutil.ReadAll(body)
169 fmt.Println("data:", string(databyte))
172 selReq = oss.SelectRequest{}
173 selReq.Expression = `
179 (person.firstname || person.lastname) = 'JohnKennedy'
181 selReq.OutputSerializationSelect.JsonBodyOutput.RecordDelimiter = ","
182 selReq.InputSerializationSelect.JsonBodyInput.JSONType = "Document"
184 body, err = bucket.SelectObject(objectKey, selReq)
190 databyte, err = ioutil.ReadAll(body)
194 fmt.Println("some data in SelectJsonObject result:", string(databyte[:9]))
196 // Delete the object and bucket
197 err = DeleteTestBucketAndObject(bucketName)
202 fmt.Println("SelectObjectSample completed")