@clickzetta/cz-cli-darwin-x64 0.3.92 → 0.3.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cz-cli +0 -0
- package/bin/skills/clickzetta-ai-function/SKILL.md +109 -0
- package/bin/skills/clickzetta-ai-function/eval_cases.jsonl +4 -0
- package/bin/skills/clickzetta-ai-function/references/ai-function-ddl.md +106 -0
- package/bin/skills/clickzetta-batch-sync-pipeline/SKILL.md +124 -124
- package/bin/skills/clickzetta-batch-sync-pipeline/eval_cases.jsonl +5 -5
- package/bin/skills/clickzetta-bi-connect/SKILL.md +79 -78
- package/bin/skills/clickzetta-bi-connect/references/bi-tools.md +56 -56
- package/bin/skills/clickzetta-cdc-sync-pipeline/SKILL.md +386 -382
- package/bin/skills/clickzetta-cdc-sync-pipeline/eval_cases.jsonl +5 -5
- package/bin/skills/clickzetta-data-ingest-pipeline/SKILL.md +73 -212
- package/bin/skills/clickzetta-data-science/SKILL.md +57 -56
- package/bin/skills/clickzetta-data-science/references/bitmap-profile.md +38 -38
- package/bin/skills/clickzetta-data-science/references/data-patterns.md +16 -16
- package/bin/skills/clickzetta-data-science/references/setup.md +28 -28
- package/bin/skills/clickzetta-data-science/references/stats-functions.md +44 -44
- package/bin/skills/clickzetta-data-science/references/write-and-infer.md +22 -22
- package/bin/skills/clickzetta-data-science/references/zettapark-api.md +32 -32
- package/bin/skills/clickzetta-dw-modeling/SKILL.md +1 -1
- package/bin/skills/clickzetta-external-function/SKILL.md +51 -109
- package/bin/skills/clickzetta-external-function/eval_cases.jsonl +4 -4
- package/bin/skills/clickzetta-external-function/references/external-function-ddl.md +39 -77
- package/bin/skills/clickzetta-java-sdk/SKILL.md +49 -48
- package/bin/skills/clickzetta-java-sdk/eval_cases.jsonl +12 -12
- package/bin/skills/clickzetta-java-sdk/references/bulkload.md +34 -34
- package/bin/skills/clickzetta-java-sdk/references/realtime.md +44 -44
- package/bin/skills/clickzetta-kafka-ingest-pipeline/SKILL.md +273 -507
- package/bin/skills/clickzetta-kafka-ingest-pipeline/references/kafka-pipe-syntax.md +197 -231
- package/bin/skills/clickzetta-oss-ingest-pipeline/SKILL.md +231 -304
- package/bin/skills/clickzetta-realtime-sync-pipeline/SKILL.md +180 -179
- package/bin/skills/clickzetta-realtime-sync-pipeline/eval_cases.jsonl +5 -5
- package/bin/skills/clickzetta-semantic-view/SKILL.md +74 -72
- package/bin/skills/clickzetta-semantic-view/eval_cases.jsonl +12 -12
- package/bin/skills/clickzetta-semantic-view/references/semantic-view-reference.md +75 -75
- package/bin/skills/clickzetta-sql-migration/SKILL.md +128 -0
- package/bin/skills/clickzetta-sql-migration/eval_cases.jsonl +10 -0
- package/bin/skills/clickzetta-sql-migration/references/ddl-reference.md +350 -0
- package/bin/skills/clickzetta-sql-migration/references/dml-differences.md +192 -0
- package/bin/skills/clickzetta-sql-migration/references/dml-reference.md +279 -0
- package/bin/skills/{clickzetta-sql-syntax-guide → clickzetta-sql-migration}/references/dql-reference.md +128 -128
- package/bin/skills/clickzetta-sql-migration/references/function-mapping.md +194 -0
- package/bin/skills/clickzetta-sql-migration/references/functions-reference.md +372 -0
- package/bin/skills/clickzetta-sql-migration/references/implicit-type-conversion.md +143 -0
- package/bin/skills/clickzetta-sql-migration/references/migration-databricks.md +260 -0
- package/bin/skills/{clickzetta-sql-syntax-guide → clickzetta-sql-migration}/references/migration-snowflake.md +112 -112
- package/bin/skills/clickzetta-sql-migration/references/vs-snowflake.md +346 -0
- package/bin/skills/clickzetta-sql-migration/references/vs-spark.md +229 -0
- package/bin/skills/clickzetta-studio-task-manager/SKILL.md +326 -329
- package/bin/skills/clickzetta-table-lineage/SKILL.md +57 -55
- package/bin/skills/clickzetta-table-lineage/eval_cases.jsonl +1 -1
- package/bin/skills/clickzetta-table-lineage/references/normalize_func.sql +5 -5
- package/bin/skills/clickzetta-table-lineage/references/table_cost.sql +6 -6
- package/bin/skills/clickzetta-table-lineage/references/table_relation.sql +2 -2
- package/bin/skills/clickzetta-volume-manager/SKILL.md +186 -100
- package/bin/skills/clickzetta-volume-manager/references/volume-ddl.md +153 -52
- package/package.json +1 -1
- package/bin/skills/clickzetta-dynamic-table/best-practices/scheduling-guide.md +0 -135
- package/bin/skills/clickzetta-dynamic-table/dt-creator/references/dt-declaration-strategy.md +0 -185
- package/bin/skills/clickzetta-dynamic-table/dt-creator/references/refresh-history-guide.md +0 -260
- package/bin/skills/clickzetta-dynamic-table/dynamic-table-alter/SKILL.md +0 -191
- package/bin/skills/clickzetta-sql-syntax-guide/SKILL.md +0 -249
- package/bin/skills/clickzetta-sql-syntax-guide/eval_cases.jsonl +0 -3
- package/bin/skills/clickzetta-sql-syntax-guide/references/ddl-reference.md +0 -350
- package/bin/skills/clickzetta-sql-syntax-guide/references/dml-reference.md +0 -279
- package/bin/skills/clickzetta-sql-syntax-guide/references/functions-reference.md +0 -372
- package/bin/skills/clickzetta-sql-syntax-guide/references/migration-databricks.md +0 -260
- package/bin/skills/clickzetta-sql-syntax-guide/references/vs-snowflake.md +0 -346
- package/bin/skills/clickzetta-sql-syntax-guide/references/vs-spark.md +0 -229
- /package/bin/skills/{clickzetta-sql-syntax-guide → clickzetta-sql-migration}/LICENSE +0 -0
|
@@ -1,52 +1,63 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: clickzetta-volume-manager
|
|
3
3
|
description: |
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
COPY INTO TABLE
|
|
8
|
-
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"COPY OVERWRITE INTO"
|
|
4
|
+
Manage ClickZetta Lakehouse Volume objects for mounting object storage (OSS/COS/S3),
|
|
5
|
+
querying files, and importing/exporting data. Covers creating External Volumes (OSS/COS/S3),
|
|
6
|
+
User Volume file operations (PUT/GET/REMOVE), SELECT FROM VOLUME direct file queries,
|
|
7
|
+
COPY INTO TABLE imports, COPY INTO VOLUME exports, and more.
|
|
8
|
+
Triggered when users say "create Volume", "mount OSS", "mount S3", "mount COS",
|
|
9
|
+
"Volume management", "query OSS files", "query S3 files", "upload files to Volume",
|
|
10
|
+
"PUT files", "GET files", "import data from Volume", "export to Volume",
|
|
11
|
+
"COPY INTO VOLUME", "SELECT FROM VOLUME", "User Volume", "data lake files",
|
|
12
|
+
"data export", "export data", "export CSV", "export Parquet", "COPY OVERWRITE INTO".
|
|
13
13
|
Keywords: Volume, OSS, COS, S3, mount, file query, COPY INTO, external storage
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
# ClickZetta Volume
|
|
16
|
+
# ClickZetta Volume Management
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
See [references/volume-ddl.md](references/volume-ddl.md) for complete syntax reference.
|
|
19
19
|
|
|
20
|
-
## Volume
|
|
20
|
+
## Volume Types
|
|
21
21
|
|
|
22
|
-
|
|
|
22
|
+
| Type | Description | Lifecycle |
|
|
23
23
|
|---|---|---|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
|
24
|
+
| External Volume | Mount OSS/COS/S3 paths via Storage Connection | User creates/drops |
|
|
25
|
+
| Managed Volume | ClickZetta-managed storage, no connection needed | User creates/drops |
|
|
26
|
+
| User Volume | Auto-created per user per workspace, user-scoped access | Auto-managed; data removed when user deleted |
|
|
27
|
+
| Table Volume | Auto-created per table, access tied to table permissions | Auto-managed; data removed when table dropped |
|
|
28
|
+
|
|
29
|
+
## SQL Reference Patterns
|
|
30
|
+
|
|
31
|
+
```sql
|
|
32
|
+
-- External Volume / Managed Volume
|
|
33
|
+
VOLUME [[<workspace>].<schema>].volume_name
|
|
34
|
+
|
|
35
|
+
-- User Volume
|
|
36
|
+
USER VOLUME
|
|
37
|
+
|
|
38
|
+
-- Table Volume
|
|
39
|
+
TABLE VOLUME [[<workspace>].<schema>].table_name
|
|
40
|
+
```
|
|
27
41
|
|
|
28
42
|
---
|
|
29
43
|
|
|
30
|
-
##
|
|
44
|
+
## Creating External Volumes
|
|
31
45
|
|
|
32
|
-
|
|
46
|
+
Prerequisite: Create a STORAGE CONNECTION first (object storage auth configuration)
|
|
33
47
|
|
|
34
|
-
>
|
|
48
|
+
> **Cross-cloud restriction**: The Storage Connection must be in the same cloud provider as the Lakehouse instance. Alibaba Cloud instances cannot create COS/S3 Connections; Tencent Cloud instances cannot create OSS Connections.
|
|
35
49
|
|
|
36
|
-
>
|
|
37
|
-
> - 小写形式:`access_id` / `access_key`(推荐)
|
|
38
|
-
> - 大写形式:`ACCESS_KEY_ID` / `ACCESS_KEY_SECRET`(也可以)
|
|
39
|
-
> - ⚠️ `ACCESS_KEY` / `SECRET_KEY` 会报错(缺少 `_ID` / `_SECRET` 后缀)
|
|
50
|
+
> **Alibaba Cloud OSS parameter names**: Use `ACCESS_KEY_ID` / `ACCESS_KEY_SECRET`. Avoid `ACCESS_KEY` / `SECRET_KEY` (missing `_ID` / `_SECRET` suffix, will fail).
|
|
40
51
|
|
|
41
52
|
```sql
|
|
42
|
-
--
|
|
53
|
+
-- Alibaba Cloud OSS
|
|
43
54
|
CREATE STORAGE CONNECTION IF NOT EXISTS my_oss_conn
|
|
44
55
|
TYPE OSS
|
|
45
|
-
|
|
46
|
-
|
|
56
|
+
ACCESS_KEY_ID = '<access_key>'
|
|
57
|
+
ACCESS_KEY_SECRET = '<secret_key>'
|
|
47
58
|
ENDPOINT = 'oss-cn-hangzhou-internal.aliyuncs.com';
|
|
48
59
|
|
|
49
|
-
--
|
|
60
|
+
-- Tencent Cloud COS
|
|
50
61
|
CREATE STORAGE CONNECTION IF NOT EXISTS my_cos_conn
|
|
51
62
|
TYPE COS
|
|
52
63
|
ACCESS_KEY = '<access_key>'
|
|
@@ -63,21 +74,21 @@ CREATE STORAGE CONNECTION IF NOT EXISTS my_s3_conn
|
|
|
63
74
|
```
|
|
64
75
|
|
|
65
76
|
```sql
|
|
66
|
-
--
|
|
77
|
+
-- Mount Alibaba Cloud OSS
|
|
67
78
|
CREATE EXTERNAL VOLUME my_oss_volume
|
|
68
79
|
LOCATION 'oss://my-bucket/data-path/'
|
|
69
80
|
USING CONNECTION my_oss_conn
|
|
70
81
|
DIRECTORY = (ENABLE = TRUE, AUTO_REFRESH = TRUE)
|
|
71
82
|
RECURSIVE = TRUE;
|
|
72
83
|
|
|
73
|
-
--
|
|
84
|
+
-- Mount Tencent Cloud COS
|
|
74
85
|
CREATE EXTERNAL VOLUME my_cos_volume
|
|
75
86
|
LOCATION 'cos://my-bucket/data-path/'
|
|
76
87
|
USING CONNECTION my_cos_conn
|
|
77
88
|
DIRECTORY = (ENABLE = TRUE)
|
|
78
89
|
RECURSIVE = TRUE;
|
|
79
90
|
|
|
80
|
-
--
|
|
91
|
+
-- Mount AWS S3
|
|
81
92
|
CREATE EXTERNAL VOLUME my_s3_volume
|
|
82
93
|
LOCATION 's3://my-bucket/data-path/'
|
|
83
94
|
USING CONNECTION my_s3_conn
|
|
@@ -87,58 +98,67 @@ CREATE EXTERNAL VOLUME my_s3_volume
|
|
|
87
98
|
|
|
88
99
|
---
|
|
89
100
|
|
|
90
|
-
##
|
|
101
|
+
## Creating Managed Volumes
|
|
102
|
+
|
|
103
|
+
Managed Volumes use ClickZetta-managed storage. No Storage Connection is required.
|
|
104
|
+
|
|
105
|
+
```sql
|
|
106
|
+
CREATE VOLUME my_managed_volume RECURSIVE = TRUE;
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Viewing Volumes
|
|
91
112
|
|
|
92
113
|
```sql
|
|
93
|
-
--
|
|
114
|
+
-- List all Volumes
|
|
94
115
|
SHOW VOLUMES;
|
|
95
116
|
|
|
96
|
-
--
|
|
97
|
-
SELECT
|
|
98
|
-
FROM
|
|
99
|
-
WHERE
|
|
117
|
+
-- Filter External Volumes
|
|
118
|
+
SELECT *
|
|
119
|
+
FROM (SHOW VOLUMES)
|
|
120
|
+
WHERE external = true;
|
|
100
121
|
|
|
101
|
-
--
|
|
122
|
+
-- View details
|
|
102
123
|
DESC VOLUME my_oss_volume;
|
|
103
124
|
|
|
104
|
-
--
|
|
125
|
+
-- View files in directory
|
|
105
126
|
SHOW VOLUME DIRECTORY my_oss_volume;
|
|
106
|
-
|
|
107
|
-
-- 刷新目录元数据后查询(上传新文件后可能需要手动刷新)
|
|
108
|
-
ALTER VOLUME my_oss_volume REFRESH;
|
|
109
|
-
SELECT * FROM DIRECTORY(VOLUME my_oss_volume);
|
|
110
127
|
```
|
|
111
128
|
|
|
112
|
-
> ⚠️ **目录刷新注意**:上传文件到对象存储后,`SHOW VOLUME DIRECTORY` 可能不会立即显示新文件。
|
|
113
|
-
> 如果启用了 `AUTO_REFRESH = TRUE`,系统会定期自动刷新;否则需要手动执行 `ALTER VOLUME name REFRESH`。
|
|
114
|
-
|
|
115
129
|
---
|
|
116
130
|
|
|
117
|
-
##
|
|
131
|
+
## Querying Files Directly from Volume
|
|
118
132
|
|
|
119
|
-
>
|
|
120
|
-
>
|
|
121
|
-
>
|
|
133
|
+
> **Syntax limitation**: ClickZetta does not support the `@volume_name` shorthand (Snowflake Stage syntax). You must use the full `FROM VOLUME name USING format` syntax.
|
|
134
|
+
> **Multi-format file handling**: If a Volume contains mixed-format files (e.g., .csv and .json), omitting `FILES()` or `SUBDIRECTORY` will attempt to read all files and may fail due to format mismatch. Use `FILES('xxx.csv')` or `SUBDIRECTORY 'csv_data/'`.
|
|
135
|
+
> **JSON nested field access**: Use `data['key']` syntax (not Snowflake's `data:key` syntax).
|
|
122
136
|
|
|
123
137
|
```sql
|
|
124
|
-
--
|
|
138
|
+
-- Query External Volume files
|
|
125
139
|
SELECT * FROM VOLUME my_oss_volume
|
|
126
140
|
USING CSV
|
|
127
141
|
OPTIONS('header' = 'true', 'sep' = ',')
|
|
128
142
|
SUBDIRECTORY 'orders/2024/'
|
|
129
143
|
LIMIT 100;
|
|
130
144
|
|
|
131
|
-
--
|
|
145
|
+
-- Query Managed Volume files
|
|
146
|
+
SELECT * FROM VOLUME my_managed_volume
|
|
147
|
+
USING CSV
|
|
148
|
+
OPTIONS('header' = 'true')
|
|
149
|
+
FILES('data.csv');
|
|
150
|
+
|
|
151
|
+
-- Query Parquet files
|
|
132
152
|
SELECT * FROM VOLUME my_oss_volume
|
|
133
153
|
USING PARQUET
|
|
134
154
|
REGEXP '.*2024-0[1-6].parquet';
|
|
135
155
|
|
|
136
|
-
--
|
|
156
|
+
-- Query specific files (recommended to avoid format conflicts)
|
|
137
157
|
SELECT * FROM VOLUME my_oss_volume
|
|
138
158
|
USING JSON
|
|
139
159
|
FILES('user_events.json');
|
|
140
160
|
|
|
141
|
-
--
|
|
161
|
+
-- Query JSON nested fields
|
|
142
162
|
SELECT
|
|
143
163
|
data['event_id'] AS event_id,
|
|
144
164
|
data['properties']['device'] AS device
|
|
@@ -146,147 +166,213 @@ FROM VOLUME my_oss_volume
|
|
|
146
166
|
USING JSON
|
|
147
167
|
FILES('events.json');
|
|
148
168
|
|
|
149
|
-
--
|
|
169
|
+
-- Query User Volume files
|
|
150
170
|
SELECT * FROM USER VOLUME
|
|
151
171
|
USING CSV
|
|
152
172
|
OPTIONS('header' = 'true')
|
|
153
173
|
FILES('upload.csv');
|
|
174
|
+
|
|
175
|
+
-- Query Table Volume files
|
|
176
|
+
SELECT * FROM TABLE VOLUME my_table
|
|
177
|
+
USING CSV
|
|
178
|
+
OPTIONS('header' = 'true')
|
|
179
|
+
FILES('data.csv');
|
|
154
180
|
```
|
|
155
181
|
|
|
156
182
|
---
|
|
157
183
|
|
|
158
|
-
##
|
|
184
|
+
## File Operations (PUT / GET / REMOVE)
|
|
185
|
+
|
|
186
|
+
All four Volume types support file-level operations. However, `PUT` and `GET` require client support (e.g., [cz-cli](https://yunqi.tech/documents/cz-cli), [Java JDBC driver](https://yunqi.tech/documents/java_reference/java-sdk-summary), [Python connector](https://yunqi.tech/documents/python_reference/python-sdk-summary)). **ClickZetta Studio Web does not support PUT/GET.**
|
|
187
|
+
|
|
188
|
+
> **Note**: User Volume is auto-created per user per workspace and cannot be explicitly created or dropped. When the user is deleted, the User Volume becomes unavailable and its data is removed.
|
|
159
189
|
|
|
160
190
|
```sql
|
|
161
|
-
--
|
|
191
|
+
-- List files
|
|
192
|
+
SHOW VOLUME DIRECTORY my_oss_volume;
|
|
193
|
+
SHOW VOLUME DIRECTORY my_managed_volume;
|
|
162
194
|
SHOW USER VOLUME DIRECTORY;
|
|
195
|
+
SHOW TABLE VOLUME DIRECTORY my_table;
|
|
163
196
|
|
|
164
|
-
--
|
|
197
|
+
-- Upload local files (External / Managed Volume)
|
|
198
|
+
PUT '/local/path/data.csv' TO VOLUME my_oss_volume;
|
|
199
|
+
PUT '/local/path/data.csv' TO VOLUME my_managed_volume;
|
|
200
|
+
|
|
201
|
+
-- Upload to User Volume
|
|
165
202
|
PUT '/local/path/data.csv' TO USER VOLUME;
|
|
166
203
|
PUT '/local/path/data.csv' TO USER VOLUME FILE 'subdir/data.csv';
|
|
167
204
|
|
|
168
|
-
--
|
|
205
|
+
-- Upload to Table Volume
|
|
206
|
+
PUT '/local/path/data.csv' TO TABLE VOLUME my_table;
|
|
207
|
+
|
|
208
|
+
-- Download files (External / Managed Volume)
|
|
209
|
+
GET VOLUME my_oss_volume FILE 'subdir/data.csv' TO '/local/output/';
|
|
210
|
+
GET VOLUME my_managed_volume FILE 'subdir/data.csv' TO '/local/output/';
|
|
211
|
+
|
|
212
|
+
-- Download from User Volume
|
|
169
213
|
GET USER VOLUME FILE 'subdir/data.csv' TO '/local/output/';
|
|
170
214
|
|
|
171
|
-
--
|
|
215
|
+
-- Download from Table Volume
|
|
216
|
+
GET TABLE VOLUME my_table FILE 'subdir/data.csv' TO '/local/output/';
|
|
217
|
+
|
|
218
|
+
-- Delete files
|
|
219
|
+
REMOVE VOLUME my_oss_volume FILE 'subdir/data.csv';
|
|
220
|
+
REMOVE VOLUME my_managed_volume FILE 'subdir/data.csv';
|
|
172
221
|
REMOVE USER VOLUME FILE 'subdir/data.csv';
|
|
222
|
+
REMOVE TABLE VOLUME my_table FILE 'subdir/data.csv';
|
|
173
223
|
```
|
|
174
224
|
|
|
175
225
|
---
|
|
176
226
|
|
|
177
|
-
##
|
|
227
|
+
## Data Import & Export
|
|
178
228
|
|
|
179
|
-
###
|
|
229
|
+
### Import from Volume to Table
|
|
180
230
|
|
|
181
231
|
```sql
|
|
182
|
-
-- CSV
|
|
232
|
+
-- CSV import from External Volume
|
|
183
233
|
COPY INTO my_table
|
|
184
234
|
FROM VOLUME my_oss_volume
|
|
185
235
|
USING CSV
|
|
186
236
|
OPTIONS('header' = 'true')
|
|
187
237
|
SUBDIRECTORY 'data/';
|
|
188
238
|
|
|
189
|
-
--
|
|
239
|
+
-- Import from Managed Volume
|
|
240
|
+
COPY INTO my_table
|
|
241
|
+
FROM VOLUME my_managed_volume
|
|
242
|
+
USING CSV
|
|
243
|
+
OPTIONS('header' = 'true')
|
|
244
|
+
FILES('data.csv');
|
|
245
|
+
|
|
246
|
+
-- Import from User Volume
|
|
247
|
+
COPY INTO my_table
|
|
248
|
+
FROM USER VOLUME
|
|
249
|
+
USING CSV
|
|
250
|
+
OPTIONS('header' = 'true')
|
|
251
|
+
FILES('data.csv');
|
|
252
|
+
|
|
253
|
+
-- Import from Table Volume
|
|
254
|
+
COPY INTO my_table
|
|
255
|
+
FROM TABLE VOLUME source_table
|
|
256
|
+
USING CSV
|
|
257
|
+
OPTIONS('header' = 'true')
|
|
258
|
+
FILES('data.csv');
|
|
259
|
+
|
|
260
|
+
-- Import specific files
|
|
190
261
|
COPY INTO my_table
|
|
191
262
|
FROM VOLUME my_oss_volume
|
|
192
263
|
USING PARQUET
|
|
193
264
|
FILES('data_2024.parquet');
|
|
194
265
|
|
|
195
|
-
--
|
|
266
|
+
-- Regex match file import
|
|
196
267
|
COPY INTO my_table
|
|
197
268
|
FROM VOLUME my_oss_volume
|
|
198
269
|
USING PARQUET
|
|
199
270
|
REGEXP '.*2024-0[1-6].parquet';
|
|
200
271
|
|
|
201
|
-
--
|
|
272
|
+
-- Overwrite (truncate table then import)
|
|
202
273
|
COPY OVERWRITE INTO my_table
|
|
203
274
|
FROM VOLUME my_oss_volume
|
|
204
275
|
USING CSV
|
|
205
276
|
OPTIONS('header' = 'true');
|
|
206
277
|
```
|
|
207
278
|
|
|
208
|
-
###
|
|
279
|
+
### Export Table to Volume
|
|
209
280
|
|
|
210
281
|
```sql
|
|
211
|
-
--
|
|
282
|
+
-- Export entire table as Parquet (to External Volume)
|
|
212
283
|
COPY INTO VOLUME my_oss_volume
|
|
213
284
|
SUBDIRECTORY 'export/'
|
|
214
285
|
FROM TABLE my_table
|
|
215
286
|
FILE_FORMAT = (TYPE = PARQUET);
|
|
216
287
|
|
|
217
|
-
--
|
|
288
|
+
-- Export query result as CSV (with compression)
|
|
218
289
|
COPY INTO VOLUME my_oss_volume
|
|
219
290
|
SUBDIRECTORY 'export/2024/'
|
|
220
291
|
FROM (SELECT * FROM orders WHERE year = 2024)
|
|
221
292
|
FILE_FORMAT = (TYPE = CSV COMPRESSION = 'GZIP');
|
|
222
293
|
|
|
223
|
-
--
|
|
294
|
+
-- Export to Managed Volume
|
|
295
|
+
COPY INTO VOLUME my_managed_volume
|
|
296
|
+
SUBDIRECTORY 'export/'
|
|
297
|
+
FROM TABLE my_table
|
|
298
|
+
FILE_FORMAT = (TYPE = CSV);
|
|
299
|
+
|
|
300
|
+
-- Export to User Volume
|
|
224
301
|
COPY INTO USER VOLUME
|
|
225
302
|
SUBDIRECTORY 'my_export/'
|
|
226
303
|
FROM TABLE my_table
|
|
227
304
|
FILE_FORMAT = (TYPE = CSV);
|
|
228
305
|
|
|
229
|
-
--
|
|
306
|
+
-- Export to Table Volume
|
|
230
307
|
COPY INTO TABLE VOLUME my_table
|
|
231
308
|
SUBDIRECTORY 'backup/'
|
|
232
309
|
FROM TABLE my_table
|
|
233
310
|
FILE_FORMAT = (TYPE = PARQUET);
|
|
234
311
|
```
|
|
235
312
|
|
|
236
|
-
>
|
|
237
|
-
> `USING`
|
|
313
|
+
> `COPY INTO VOLUME` exports use `FILE_FORMAT = (TYPE = CSV/PARQUET)`, not `USING CSV`.
|
|
314
|
+
> The `USING` keyword is only for `SELECT FROM VOLUME` queries.
|
|
238
315
|
|
|
239
|
-
###
|
|
316
|
+
### Export to Local (GET Command)
|
|
240
317
|
|
|
241
318
|
```sql
|
|
242
|
-
--
|
|
319
|
+
-- Download files from Volume to local
|
|
243
320
|
GET VOLUME my_oss_volume FILE 'export/data.csv' TO '/local/output/';
|
|
244
321
|
|
|
245
|
-
--
|
|
322
|
+
-- Download files from Volume to local
|
|
323
|
+
GET VOLUME my_managed_volume FILE 'export/data.csv' TO '/local/output/';
|
|
324
|
+
|
|
325
|
+
-- Download from User Volume
|
|
246
326
|
GET USER VOLUME FILE 'my_export/data.csv' TO '/local/output/';
|
|
247
327
|
```
|
|
248
328
|
|
|
249
|
-
###
|
|
329
|
+
### Export via Studio
|
|
250
330
|
|
|
251
|
-
|
|
252
|
-
-
|
|
253
|
-
-
|
|
331
|
+
In Lakehouse Studio:
|
|
332
|
+
- After executing a SQL query, click the "Export" button in the result area to export as CSV or Excel
|
|
333
|
+
- Supports exporting up to 100,000 rows of query results
|
|
254
334
|
|
|
255
335
|
---
|
|
256
336
|
|
|
257
|
-
##
|
|
337
|
+
## Dropping Volumes
|
|
338
|
+
|
|
339
|
+
Only External Volumes and Managed Volumes can be explicitly dropped. User Volume and Table Volume are auto-managed and cannot be dropped explicitly.
|
|
258
340
|
|
|
259
341
|
```sql
|
|
342
|
+
-- Drop External Volume
|
|
260
343
|
DROP VOLUME IF EXISTS my_oss_volume;
|
|
344
|
+
|
|
345
|
+
-- Drop Managed Volume
|
|
346
|
+
DROP VOLUME IF EXISTS my_managed_volume;
|
|
261
347
|
```
|
|
262
348
|
|
|
263
349
|
---
|
|
264
350
|
|
|
265
|
-
##
|
|
351
|
+
## FAQ
|
|
266
352
|
|
|
267
|
-
|
|
|
353
|
+
| Issue | Cause | Solution |
|
|
268
354
|
|---|---|---|
|
|
269
|
-
| SHOW VOLUME DIRECTORY
|
|
270
|
-
| SELECT FROM VOLUME
|
|
271
|
-
| COPY INTO
|
|
272
|
-
| PUT
|
|
273
|
-
| COPY INTO
|
|
274
|
-
| `@volume`
|
|
275
|
-
| `data:key`
|
|
276
|
-
| `METADATA$FILENAME`
|
|
355
|
+
| SHOW VOLUME DIRECTORY shows no files | Directory not refreshed | Run `ALTER VOLUME name REFRESH` |
|
|
356
|
+
| SELECT FROM VOLUME fails | Format mismatch | Ensure USING format matches actual file format; use `FILES()` to specify files |
|
|
357
|
+
| COPY INTO fails with mixed format files | Mixed format files in Volume | Use `FILES('xxx.csv')` or `SUBDIRECTORY` to narrow scope |
|
|
358
|
+
| PUT command fails | Local path does not exist | Verify local file path is correct |
|
|
359
|
+
| COPY INTO errors | Insufficient permissions | Check STORAGE CONNECTION access key permissions |
|
|
360
|
+
| `@volume` syntax error | Not supported in ClickZetta | Use `FROM VOLUME name USING format` |
|
|
361
|
+
| `data:key` syntax error | Snowflake JSON syntax not applicable | Use `data['key']` syntax for JSON nested fields |
|
|
362
|
+
| `METADATA$FILENAME` error | This metadata field is not supported | Use string literals or add a file path column manually during INSERT |
|
|
277
363
|
|
|
278
364
|
---
|
|
279
365
|
|
|
280
|
-
## Snowflake
|
|
366
|
+
## Snowflake Migration Reference
|
|
281
367
|
|
|
282
|
-
| Snowflake
|
|
368
|
+
| Snowflake Syntax | ClickZetta Equivalent | Notes |
|
|
283
369
|
|---|---|---|
|
|
284
370
|
| `@my_stage` | `VOLUME my_volume` | Stage → Volume |
|
|
285
|
-
| `SELECT * FROM @stage/path` | `SELECT * FROM VOLUME vol USING CSV SUBDIRECTORY 'path/'` |
|
|
286
|
-
| `data:key::STRING` | `data['key']` | JSON
|
|
287
|
-
| `data:nested.key` | `data['nested']['key']` |
|
|
288
|
-
| `METADATA$FILENAME` |
|
|
289
|
-
| `METADATA$FILE_ROW_NUMBER` |
|
|
290
|
-
| `FILE_FORMAT = (TYPE = CSV)` | `USING CSV OPTIONS(...)` |
|
|
291
|
-
| `COPY INTO table FROM @stage` | `COPY INTO table FROM VOLUME vol USING format` |
|
|
292
|
-
| `COPY INTO @stage FROM table` | `COPY INTO VOLUME vol SUBDIRECTORY '/' FROM TABLE t FILE_FORMAT=(...)` |
|
|
371
|
+
| `SELECT * FROM @stage/path` | `SELECT * FROM VOLUME vol USING CSV SUBDIRECTORY 'path/'` | Must specify USING format |
|
|
372
|
+
| `data:key::STRING` | `data['key']` | JSON field access |
|
|
373
|
+
| `data:nested.key` | `data['nested']['key']` | Nested JSON access |
|
|
374
|
+
| `METADATA$FILENAME` | Not supported | Add file path column manually |
|
|
375
|
+
| `METADATA$FILE_ROW_NUMBER` | Not supported | No equivalent |
|
|
376
|
+
| `FILE_FORMAT = (TYPE = CSV)` | `USING CSV OPTIONS(...)` | Use USING for imports, FILE_FORMAT for exports |
|
|
377
|
+
| `COPY INTO table FROM @stage` | `COPY INTO table FROM VOLUME vol USING format` | Import syntax |
|
|
378
|
+
| `COPY INTO @stage FROM table` | `COPY INTO VOLUME vol SUBDIRECTORY '/' FROM TABLE t FILE_FORMAT=(...)` | Export syntax |
|