github.com/aliyun/aliyun-oss-go-sdk@v3.0.2+incompatible/sample/select_object.go (about) 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 }