-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathexample_tables_test.go
129 lines (106 loc) · 3.15 KB
/
example_tables_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package odps_test
import (
"fmt"
"log"
"github.com/aliyun/aliyun-odps-go-sdk/odps"
"github.com/aliyun/aliyun-odps-go-sdk/odps/datatype"
"github.com/aliyun/aliyun-odps-go-sdk/odps/tableschema"
)
func ExampleTables_List() {
ts := odps.NewTables(odpsIns, "", "")
f := func(t *odps.Table, err error) {
if err != nil {
log.Fatalf("%+v", err)
}
println(fmt.Sprintf("%s, %s, %s", t.Name(), t.Owner(), t.Type()))
}
ts.List(f, odps.TableFilter.Extended())
// Output:
}
func ExampleTables_BatchLoadTables() {
tablesIns := odps.NewTables(odpsIns, "", "")
tableNames := []string{
"has_struct",
"sale_detail",
"testtable",
"user",
}
tables, err := tablesIns.BatchLoadTables(tableNames)
if err != nil {
log.Fatalf("%+v", err)
}
for _, table := range tables {
println(fmt.Sprintf("%s, %s, %s", table.Name(), table.TableID(), table.Type()))
}
schema := tables[len(tables)-1].Schema()
for _, c := range schema.Columns {
println(fmt.Sprintf("%s, %s, %t, %s", c.Name, c.Type, c.NotNull, c.Comment))
}
// Output:
}
func ExampleTables_Create() {
c1 := tableschema.Column{
Name: "name",
Type: datatype.StringType,
Comment: "name of user",
}
c2 := tableschema.Column{
Name: "age",
Type: datatype.IntType,
Comment: "how old is the user",
}
p1 := tableschema.Column{
Name: "region",
Type: datatype.StringType,
Comment: "居住区域",
}
p2 := tableschema.Column{
Name: "code",
Type: datatype.IntType,
}
hints := make(map[string]string)
hints["odps.sql.preparse.odps"] = "lot"
hints["odps.sql.planner.mode"] = "lot"
hints["odps.sql.planner.parser.odps"] = "true"
hints["odps.sql.ddl.odps"] = "true"
hints["odps.compiler.output.format"] = "lot,pot"
hints["odps.namespace.schema"] = "false"
builder := tableschema.NewSchemaBuilder()
builder.Name("user_temp").
Comment("这就是一条注释").
Columns(c1, c2).
PartitionColumns(p1, p2).
Lifecycle(2)
schema := builder.Build()
sql, _ := schema.ToSQLString(defaultProjectName, "", false)
println(sql)
tables := odps.NewTables(odpsIns, odpsIns.DefaultProjectName(), "")
err := tables.Create(schema, true, hints, nil)
if err != nil {
log.Fatalf("%+v", err)
}
// Output:
}
func ExampleTables_Delete() {
tables := odps.NewTables(odpsIns, odpsIns.DefaultProjectName(), "")
err := tables.Delete("user_temp", false)
if err != nil {
log.Fatalf("%+v", err)
}
// Output:
}