@clickzetta/cz-cli-darwin-x64 0.3.92 → 0.3.94

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.
Files changed (69) hide show
  1. package/bin/cz-cli +0 -0
  2. package/bin/skills/clickzetta-ai-function/SKILL.md +109 -0
  3. package/bin/skills/clickzetta-ai-function/eval_cases.jsonl +4 -0
  4. package/bin/skills/clickzetta-ai-function/references/ai-function-ddl.md +106 -0
  5. package/bin/skills/clickzetta-batch-sync-pipeline/SKILL.md +124 -124
  6. package/bin/skills/clickzetta-batch-sync-pipeline/eval_cases.jsonl +5 -5
  7. package/bin/skills/clickzetta-bi-connect/SKILL.md +79 -78
  8. package/bin/skills/clickzetta-bi-connect/references/bi-tools.md +56 -56
  9. package/bin/skills/clickzetta-cdc-sync-pipeline/SKILL.md +386 -382
  10. package/bin/skills/clickzetta-cdc-sync-pipeline/eval_cases.jsonl +5 -5
  11. package/bin/skills/clickzetta-data-ingest-pipeline/SKILL.md +73 -212
  12. package/bin/skills/clickzetta-data-science/SKILL.md +57 -56
  13. package/bin/skills/clickzetta-data-science/references/bitmap-profile.md +38 -38
  14. package/bin/skills/clickzetta-data-science/references/data-patterns.md +16 -16
  15. package/bin/skills/clickzetta-data-science/references/setup.md +28 -28
  16. package/bin/skills/clickzetta-data-science/references/stats-functions.md +44 -44
  17. package/bin/skills/clickzetta-data-science/references/write-and-infer.md +22 -22
  18. package/bin/skills/clickzetta-data-science/references/zettapark-api.md +32 -32
  19. package/bin/skills/clickzetta-dw-modeling/SKILL.md +1 -1
  20. package/bin/skills/clickzetta-external-function/SKILL.md +51 -109
  21. package/bin/skills/clickzetta-external-function/eval_cases.jsonl +4 -4
  22. package/bin/skills/clickzetta-external-function/references/external-function-ddl.md +39 -77
  23. package/bin/skills/clickzetta-java-sdk/SKILL.md +49 -48
  24. package/bin/skills/clickzetta-java-sdk/eval_cases.jsonl +12 -12
  25. package/bin/skills/clickzetta-java-sdk/references/bulkload.md +34 -34
  26. package/bin/skills/clickzetta-java-sdk/references/realtime.md +44 -44
  27. package/bin/skills/clickzetta-kafka-ingest-pipeline/SKILL.md +273 -507
  28. package/bin/skills/clickzetta-kafka-ingest-pipeline/references/kafka-pipe-syntax.md +197 -231
  29. package/bin/skills/clickzetta-oss-ingest-pipeline/SKILL.md +231 -304
  30. package/bin/skills/clickzetta-realtime-sync-pipeline/SKILL.md +180 -179
  31. package/bin/skills/clickzetta-realtime-sync-pipeline/eval_cases.jsonl +5 -5
  32. package/bin/skills/clickzetta-semantic-view/SKILL.md +74 -72
  33. package/bin/skills/clickzetta-semantic-view/eval_cases.jsonl +12 -12
  34. package/bin/skills/clickzetta-semantic-view/references/semantic-view-reference.md +75 -75
  35. package/bin/skills/clickzetta-sql-migration/SKILL.md +128 -0
  36. package/bin/skills/clickzetta-sql-migration/eval_cases.jsonl +10 -0
  37. package/bin/skills/clickzetta-sql-migration/references/ddl-reference.md +350 -0
  38. package/bin/skills/clickzetta-sql-migration/references/dml-differences.md +192 -0
  39. package/bin/skills/clickzetta-sql-migration/references/dml-reference.md +279 -0
  40. package/bin/skills/{clickzetta-sql-syntax-guide → clickzetta-sql-migration}/references/dql-reference.md +128 -128
  41. package/bin/skills/clickzetta-sql-migration/references/function-mapping.md +194 -0
  42. package/bin/skills/clickzetta-sql-migration/references/functions-reference.md +372 -0
  43. package/bin/skills/clickzetta-sql-migration/references/implicit-type-conversion.md +143 -0
  44. package/bin/skills/clickzetta-sql-migration/references/migration-databricks.md +260 -0
  45. package/bin/skills/{clickzetta-sql-syntax-guide → clickzetta-sql-migration}/references/migration-snowflake.md +112 -112
  46. package/bin/skills/clickzetta-sql-migration/references/vs-snowflake.md +346 -0
  47. package/bin/skills/clickzetta-sql-migration/references/vs-spark.md +229 -0
  48. package/bin/skills/clickzetta-studio-task-manager/SKILL.md +326 -329
  49. package/bin/skills/clickzetta-table-lineage/SKILL.md +57 -55
  50. package/bin/skills/clickzetta-table-lineage/eval_cases.jsonl +1 -1
  51. package/bin/skills/clickzetta-table-lineage/references/normalize_func.sql +5 -5
  52. package/bin/skills/clickzetta-table-lineage/references/table_cost.sql +6 -6
  53. package/bin/skills/clickzetta-table-lineage/references/table_relation.sql +2 -2
  54. package/bin/skills/clickzetta-volume-manager/SKILL.md +186 -100
  55. package/bin/skills/clickzetta-volume-manager/references/volume-ddl.md +153 -52
  56. package/package.json +1 -1
  57. package/bin/skills/clickzetta-dynamic-table/best-practices/scheduling-guide.md +0 -135
  58. package/bin/skills/clickzetta-dynamic-table/dt-creator/references/dt-declaration-strategy.md +0 -185
  59. package/bin/skills/clickzetta-dynamic-table/dt-creator/references/refresh-history-guide.md +0 -260
  60. package/bin/skills/clickzetta-dynamic-table/dynamic-table-alter/SKILL.md +0 -191
  61. package/bin/skills/clickzetta-sql-syntax-guide/SKILL.md +0 -249
  62. package/bin/skills/clickzetta-sql-syntax-guide/eval_cases.jsonl +0 -3
  63. package/bin/skills/clickzetta-sql-syntax-guide/references/ddl-reference.md +0 -350
  64. package/bin/skills/clickzetta-sql-syntax-guide/references/dml-reference.md +0 -279
  65. package/bin/skills/clickzetta-sql-syntax-guide/references/functions-reference.md +0 -372
  66. package/bin/skills/clickzetta-sql-syntax-guide/references/migration-databricks.md +0 -260
  67. package/bin/skills/clickzetta-sql-syntax-guide/references/vs-snowflake.md +0 -346
  68. package/bin/skills/clickzetta-sql-syntax-guide/references/vs-spark.md +0 -229
  69. /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
- 管理 ClickZetta Lakehouse Volume 对象,实现对象存储(OSS/COS/S3)的挂载、
5
- 文件查询与数据导入导出。覆盖外部 Volume 创建(OSS/COS/S3)、内部 User Volume
6
- 文件操作(PUT/GET/REMOVE)、SELECT FROM VOLUME 直接查询文件、
7
- COPY INTO TABLE 导入、COPY INTO VOLUME 导出等完整工作流。
8
- 当用户说"创建Volume""挂载OSS""挂载S3""挂载COS"、"Volume管理"、
9
- "查询OSS文件""查询S3文件""上传文件到Volume"、"PUT文件"、"GET文件"、
10
- "从Volume导入数据""导出到Volume""COPY INTO VOLUME""SELECT FROM VOLUME"
11
- "User Volume""数据湖文件""数据导出""导出数据"、"导出CSV"、"导出Parquet"、
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
- 阅读 [references/volume-ddl.md](references/volume-ddl.md) 了解完整语法。
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
- | 外部 Volume | 挂载 OSS/COS/S3 路径 | 访问已有对象存储数据 |
25
- | User Volume | 用户专属内部存储 | 临时文件上传、本地文件导入 |
26
- | Table Volume | 表关联内部存储 | 表数据文件管理 |
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
- ## 创建外部 Volume
44
+ ## Creating External Volumes
31
45
 
32
- 前提:先创建 STORAGE CONNECTION(对象存储认证配置)
46
+ Prerequisite: Create a STORAGE CONNECTION first (object storage auth configuration)
33
47
 
34
- > ⚠️ **跨云限制**:Storage Connection 必须与 Lakehouse 实例在同一云厂商。阿里云实例不能创建 COS/S3 Connection,腾讯云实例不能创建 OSS Connection。
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
- > ⚠️ **阿里云 OSS 参数名**:
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
- -- 阿里云 OSS
53
+ -- Alibaba Cloud OSS
43
54
  CREATE STORAGE CONNECTION IF NOT EXISTS my_oss_conn
44
55
  TYPE OSS
45
- access_id = 'LTAIxxxxxxxxxxxx'
46
- access_key = 'T8Gexxxxxxmtxxxxxx'
56
+ ACCESS_KEY_ID = '<access_key>'
57
+ ACCESS_KEY_SECRET = '<secret_key>'
47
58
  ENDPOINT = 'oss-cn-hangzhou-internal.aliyuncs.com';
48
59
 
49
- -- 腾讯云 COS
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
- -- 挂载阿里云 OSS
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
- -- 挂载腾讯云 COS
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
- -- 挂载 AWS S3
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
- ## 查看 Volume
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
- -- 列出所有 Volume
114
+ -- List all Volumes
94
115
  SHOW VOLUMES;
95
116
 
96
- -- 过滤外部 Volume(SHOW VOLUMES 不支持 WHERE 过滤,使用 information_schema)
97
- SELECT volume_name, volume_type, volume_region, volume_creator
98
- FROM information_schema.volumes
99
- WHERE volume_type = 'EXTERNAL';
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
- ## 直接查询 Volume 中的文件
131
+ ## Querying Files Directly from Volume
118
132
 
119
- > ⚠️ **语法限制**:ClickZetta 不支持 `@volume_name` 简写(Snowflake Stage 语法),必须使用 `FROM VOLUME name USING format` 完整语法。
120
- > ⚠️ **多格式文件处理**:如果 Volume 中包含多种格式的文件(如 .csv .json 混合),不指定 `FILES()` `SUBDIRECTORY` 时会尝试读取所有文件,可能因格式不匹配而报错。建议使用 `FILES('xxx.csv')` 指定文件或 `SUBDIRECTORY 'csv_data/'` 指定子目录。
121
- > ⚠️ **JSON 嵌套字段访问**:使用 `data['key']` 语法(不是 Snowflake `data:key` 语法)。
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
- -- 查询 CSV 文件(自动推断 schema)
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
- -- 查询 Parquet 文件
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
- -- 查询 JSON 嵌套字段
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
- -- 查询 User Volume 文件
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
- ## User Volume 文件操作
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
- ### Volume 导入到表
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
- ### 导出表到 Volume
279
+ ### Export Table to Volume
209
280
 
210
281
  ```sql
211
- -- 导出整张表为 Parquet(到 External Volume
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
- -- 导出查询结果为 CSV(带压缩)
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
- -- 导出到 User Volume
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
- -- 导出到 Table Volume
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
- > ⚠️ `COPY INTO VOLUME` 导出使用 `FILE_FORMAT = (TYPE = CSV/PARQUET)`,不是 `USING CSV`。
237
- > `USING` 关键字仅用于 `SELECT FROM VOLUME` 查询文件。
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
- ### 导出到本地(GET 命令)
316
+ ### Export to Local (GET Command)
240
317
 
241
318
  ```sql
242
- -- Volume 下载文件到本地
319
+ -- Download files from Volume to local
243
320
  GET VOLUME my_oss_volume FILE 'export/data.csv' TO '/local/output/';
244
321
 
245
- -- User Volume 下载
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
- ### 通过 Studio 导出
329
+ ### Export via Studio
250
330
 
251
- Lakehouse Studio 中:
252
- - 执行 SQL 查询后,点击结果区域的「导出」按钮,可导出为 CSV Excel 文件
253
- - 支持导出最多 10 万行查询结果
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
- ## 删除 Volume
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 无文件 | 目录未刷新 | 执行 `ALTER VOLUME name REFRESH` |
270
- | SELECT FROM VOLUME 报错 | 格式不匹配 | 确认 USING 后的格式与实际文件格式一致;使用 `FILES()` 指定文件 |
271
- | COPY INTO 读取多格式文件失败 | Volume 中有混合格式文件 | 使用 `FILES('xxx.csv')` 指定文件或 `SUBDIRECTORY` 指定子目录 |
272
- | PUT 命令失败 | 本地路径不存在 | 确认本地文件路径正确 |
273
- | COPY INTO 报错 | 权限不足 | 检查 STORAGE CONNECTION 的访问密钥权限 |
274
- | `@volume` 语法报错 | ClickZetta 不支持 | 使用 `FROM VOLUME name USING format` 完整语法 |
275
- | `data:key` 语法报错 | Snowflake JSON 语法不适用 | 使用 `data['key']` 语法访问 JSON 嵌套字段 |
276
- | `METADATA$FILENAME` 报错 | ClickZetta 不支持此元数据字段 | 使用字符串字面量或在 INSERT 时手动添加文件路径列 |
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 语法 | ClickZetta 等价语法 | 说明 |
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/'` | 必须指定 USING 格式 |
286
- | `data:key::STRING` | `data['key']` | JSON 字段访问 |
287
- | `data:nested.key` | `data['nested']['key']` | 嵌套 JSON 访问 |
288
- | `METADATA$FILENAME` | 不支持 | 需手动添加文件路径列 |
289
- | `METADATA$FILE_ROW_NUMBER` | 不支持 | 无等价功能 |
290
- | `FILE_FORMAT = (TYPE = CSV)` | `USING CSV OPTIONS(...)` | 导入时用 USING,导出时用 FILE_FORMAT |
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 |