跳到主要内容

Databend stage 介绍

· 阅读需 5 分钟
wubx
Data AI

Databend Stage 在 Databend 是一个重要的概念, 主要用于数据的暂时存储或是团队间数据交换。通过 Stage,用户可以在不同的存储位置和场景下处理数据,方便数据的上传、共享和管理。

Stage 类型 在 Databend 中,Stage 类型主要分为三种:User Stage、Internal Stage 和 External Stage。以下是对这三种 Stage 的详细对比:

特性User StageInternal StageExternal Stage
存储位置Databend 内部存储Databend 内部存储外部云存储(如 S3、Azure)
创建方式默认自带手动创建,不需要带connconnect手动创建,需要指定 connection
访问权限仅限用户本人可共享给其他用户或角色可共享给其他用户或角色
Drop stage不允许删除对应的 stage 名字,清理对应的位置的文件只会删除 stage 名字,对应路径下的文件会保留
文件上传需要上传文件到 Databend需要上传文件到 Databend无需上传文件,主要用读取该位置的数据,或是卸载数据到该位置
使用场景用户私有文件团队共享文件外部数据加载/卸载
访问路径@~/@stage_name/@stage_name/
名字自定义不支持支持支持

Stage 的使用方法

创建 Stage:

  • User Stage: 默认会为每位用户自动创建,无需手动操作。
  • Internal Stage: 用户可以通过执行 CREATE STAGE stage_name; 来创建内部 Stage。
  • External Stage: 用户需要使用来创建,需指定连接信息,如。
    CREATE STAGE mystage 's3://myupload' 
    CONNECTION=(
    endpoint_url='http://127.0.0.1:9000',
    access_key_id='minioadmin',
    secret_access_key='minioadmin',
    region='us-east-1'
    );

访问与权限管理:

User Stage 仅限用户本人访问, 私密空间,管理员也无法查看

Internal Stage 和 External Stage 可以共享给其他用户或角色。

文件上传与处理:

  • User Stage 和 Internal Stage 需要用户手动上传文件到 Databend (对象存储需要支持 presign 功能)
  • External Stage 则可以直接读取外部云存储中的数据,无需手动上传,可以直接利用 s3 sdk 或是 opendal 直接写对应的 bucket .

删除 Stage:

删除操作在不同的 Stage 类型中有所区别:

  • User Stage 不允许删除。
  • Internal Stage 删除时会清理对应位置的文件。
  • External Stage 只会删除 Stage 名称,实际存储的数据文件将会保留, 感觉相当删除了一个连接。

基本使用

构建数据参考: Databend 快速入门

数据读取

COPY INTO t_person FROM @mystage PATTERN='.*[.]csv' FILE_FORMAT=(TYPE=CSV, SKIP_HEADER=1);

数据卸载

copy into @mystage/t_person/ from (select * from t_person) file_format=(type=parquet);

查看 stage 数据

list @~;

table 方式查看 stage 相关数据

SELECT * FROM list_stage(location => '@mystage');

如果 stage 下文件特别多,建议把上面的结构存到一个表中去分析,更多使用参考:

https://docs.databend.cn/sql/sql-functions/table-functions/list-stage

删除 stage 数据

remove @~;

小结

Databend Stage 为 Databend 提供了灵活的数据管理和交换机制,用户可以根据自己的需求选择合适的 Stage 类型来优化数据处理流程。了解不同 Stage 之间的差异和使用场景,有助于用户更高效地利用 Databend 进行数据分析和处理。

💬 社区支持
有问题与我们的团队联系:Slack

微信: 82565387