跳到主要内容

上传至Stage

Databend推荐两种文件上传方法到Stage:PRESIGN 和 PUT/GET 命令。这些方法使得客户端与存储之间的数据传输直接进行,消除了中间环节,并通过减少Databend与存储之间的流量来节省成本。

Alt text

PRESIGN方法生成一个有时间限制的带签名URL,客户端可以使用该URL安全地发起文件上传。此URL授予对指定Stage的临时访问权限,允许客户端直接传输数据,而无需依赖Databend服务器进行整个过程,从而增强了安全性和效率。

如果您使用BendSQL来管理Stage中的文件,您可以使用PUT命令上传文件,使用GET命令下载文件。

  • GET命令目前只能下载Stage中的所有文件,不能下载单个文件。
  • 这些命令专属于BendSQL,并且当Databend使用文件系统作为存储后端时,GET命令将无法工作。

使用预签名URL上传

以下示例展示了如何使用预签名URL将示例文件(books.parquet)上传到用户Stage、内部Stage和外部Stage。

PRESIGN UPLOAD @~/books.parquet;

结果:

┌────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Name │ Value │
├────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ method │ PUT │
│ headers│ {"host":"s3.us-east-2.amazonaws.com"} │
│ url │ https://s3.us-east-2.amazonaws.com/databend-toronto/stage/user/root/books.parquet?X-Amz-Algorithm... │
└────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
curl -X PUT -T books.parquet "https://s3.us-east-2.amazonaws.com/databend-toronto/stage/user/root/books.parquet?X-Amz-Algorithm=... ...

检查Stage中的文件:

LIST @~;

结果:

┌───────────────┬──────┬──────────────────────────────────────┬─────────────────────────────────┬─────────┐
│ name │ size │ md5 │ last_modified │ creator │
├───────────────┼──────┼──────────────────────────────────────┼─────────────────────────────────┼─────────┤
│ books.parquet │ 998 │ 88432bf90aadb79073682988b39d461c │ 2023-06-27 16:03:51.000 +0000 │ │
└───────────────┴──────┴──────────────────────────────────────┴─────────────────────────────────┴─────────┘

使用 PUT 命令上传

以下示例展示了如何使用 BendSQL 将示例文件(books.parquet)上传到用户暂存区、内部暂存区和外部暂存区。

PUT fs:///Users/eric/Documents/books.parquet @~

结果:

┌───────────────────────────────────────────────┐
│ file │ status │
├─────────────────────────────────────┼─────────┤
│ /Users/eric/Documents/books.parquet │ SUCCESS │
└───────────────────────────────────────────────┘

检查暂存文件:

LIST @~;

结果:

┌────────────────────────────────────────────────────────────────────────┐
│ name │ size │ ··· │ last_modified │ creator │
├───────────────┼────────┼─────┼──────────────────────┼──────────────────┤
│ books.parquet │ 998 │ ... │ 2023-09-04 03:27:... │ NULL │
└────────────────────────────────────────────────────────────────────────┘

使用 GET 命令下载

以下示例展示了如何使用 BendSQL 从用户暂存区、内部暂存区和外部暂存区下载示例文件(books.parquet)。

LIST @~;

结果:

┌────────────────────────────────────────────────────────────────────────┐
│ name │ size │ ··· │ last_modified │ creator │
├───────────────┼────────┼─────┼──────────────────────┼──────────────────┤
│ books.parquet │ 998 │ ... │ 2023-09-04 03:27:... │ NULL │
└────────────────────────────────────────────────────────────────────────┘
GET @~/ fs:///Users/eric/Downloads/fromStage/;

结果:

┌─────────────────────────────────────────────────────────┐
│ file │ status │
├───────────────────────────────────────────────┼─────────┤
│ /Users/eric/Downloads/fromStage/books.parquet │ SUCCESS │
└─────────────────────────────────────────────────────────┘
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册