OSDN Git Service

Create ossClient.go (#574)
[bytom/vapor.git] / vendor / github.com / aliyun / aliyun-oss-go-sdk / sample / select_object.go
1 package sample
2
3 import (
4         "fmt"
5         "io/ioutil"
6         
7         "github.com/aliyun/aliyun-oss-go-sdk/oss"
8 )
9
10 // SelectObjectSample shows how to get data from csv/json object by sql
11 func SelectObjectSample() {
12         // Create a bucket
13         bucket, err := GetTestBucket(bucketName)
14         if err != nil {
15                 HandleError(err)
16         }
17
18         //
19         // Create a Csv object
20         //
21         err = bucket.PutObjectFromFile(objectKey, localCsvFile)
22         if err != nil {
23                 HandleError(err)
24         }
25
26         // Create Csv Meta
27         csvMeta := oss.CsvMetaRequest{}
28         ret, err := bucket.CreateSelectCsvObjectMeta(objectKey, csvMeta)
29         if err != nil {
30                 HandleError(err)
31         }
32         fmt.Println("csv file meta:", ret)
33
34         // case 1: Isn't NULL
35         selReq := oss.SelectRequest{}
36         selReq.Expression = "select Year, StateAbbr, CityName, PopulationCount from ossobject where CityName != ''"
37         selReq.InputSerializationSelect.CsvBodyInput.FileHeaderInfo = "Use"
38
39         body, err := bucket.SelectObject(objectKey, selReq)
40         if err != nil {
41                 HandleError(err)
42         }
43         defer body.Close()
44
45         databyte, err := ioutil.ReadAll(body)
46         if err != nil {
47                 HandleError(err)
48         }
49         fmt.Println("some data in SelectCSVObject result:", string(databyte[:9]))
50
51         // case 2: Like
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)
56         if err != nil {
57                 HandleError(err)
58         }
59         defer body.Close()
60
61         databyte, err = ioutil.ReadAll(body)
62         if err != nil {
63                 HandleError(err)
64         }
65         fmt.Println("some data in SelectCSVObject result:", string(databyte[:9]))
66
67         // delete object
68         err = bucket.DeleteObject(objectKey)
69         if err != nil {
70                 HandleError(err)
71         }
72
73         //
74         // Create a LINES json object
75         //
76         err = bucket.PutObjectFromFile(objectKey, localJSONLinesFile)
77         if err != nil {
78                 HandleError(err)
79         }
80
81         // Create LINES JSON Meta
82         jsonMeta := oss.JsonMetaRequest{
83                 InputSerialization: oss.InputSerialization {
84                         JSON: oss.JSON {
85                                 JSONType:"LINES",
86                         },
87                 },
88         }
89         restSt, err := bucket.CreateSelectJsonObjectMeta(objectKey, jsonMeta)
90         if err != nil {
91                 HandleError(err)
92         }
93         fmt.Println("csv json meta:", restSt)
94
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"
100
101         body, err = bucket.SelectObject(objectKey, selReq)
102         if err != nil {
103                 HandleError(err)
104         }
105         defer body.Close()
106
107         databyte, err = ioutil.ReadAll(body)
108         if err != nil {
109                 HandleError(err)
110         }
111         fmt.Println("some data in SelectJsonObject result:", string(databyte[:9]))
112
113         // case 2: LIKE
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"
118
119         body, err = bucket.SelectObject(objectKey, selReq)
120         if err != nil {
121                 HandleError(err)
122         }
123         defer body.Close()
124
125         databyte, err = ioutil.ReadAll(body)
126         if err != nil {
127                 HandleError(err)
128         }
129         fmt.Println("some data in SelectJsonObject result:", string(databyte[:9]))
130
131         // delete object
132         err = bucket.DeleteObject(objectKey)
133         if err != nil {
134                 HandleError(err)
135         }
136
137         //
138         // Create a Document json object
139         //
140         err = bucket.PutObjectFromFile(objectKey, localJSONFile)
141         if err != nil {
142                 HandleError(err)
143         }
144
145         // case 1: int avg, max, min 
146         selReq = oss.SelectRequest{}
147         selReq.Expression = `
148         select 
149                 avg(cast(person.cspanid as int)), max(cast(person.cspanid as int)), 
150                 min(cast(person.cspanid as int)) 
151         from 
152                 ossobject.objects[*] 
153         where 
154                 person.cspanid = 1011723
155         `
156         selReq.OutputSerializationSelect.JsonBodyOutput.RecordDelimiter = ","
157         selReq.InputSerializationSelect.JsonBodyInput.JSONType = "Document"
158         
159         body, err = bucket.SelectObject(objectKey, selReq)
160         if err != nil {
161                 HandleError(err)
162         }
163         defer body.Close()
164
165         databyte, err = ioutil.ReadAll(body)
166         if err != nil {
167                 HandleError(err)
168         }
169         fmt.Println("data:", string(databyte))
170
171         // case 2: Concat
172         selReq = oss.SelectRequest{}
173         selReq.Expression = `
174         select 
175                 person 
176         from 
177                 ossobject.objects[*] 
178         where 
179                 (person.firstname || person.lastname) = 'JohnKennedy'
180         `
181         selReq.OutputSerializationSelect.JsonBodyOutput.RecordDelimiter = ","
182         selReq.InputSerializationSelect.JsonBodyInput.JSONType = "Document"
183         
184         body, err = bucket.SelectObject(objectKey, selReq)
185         if err != nil {
186                 HandleError(err)
187         }
188         defer body.Close()
189
190         databyte, err = ioutil.ReadAll(body)
191         if err != nil {
192                 HandleError(err)
193         }
194         fmt.Println("some data in SelectJsonObject result:", string(databyte[:9]))
195         
196         // Delete the object and bucket
197         err = DeleteTestBucketAndObject(bucketName)
198         if err != nil {
199                 HandleError(err)
200         }
201
202         fmt.Println("SelectObjectSample completed")
203 }