跳到主要内容

上传到 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=... ...

检查上传的文件:

LIST @~;

结果:

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

使用 PUT 命令上传

以下示例演示如何使用 BendSQL 的 PUT 命令将样本文件(books.parquet)上传到用户 Stage、内部 Stage 和外部 Stage。

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 的 GET 命令从用户Stage、内部Stage和外部Stage下载样本文件(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 │
└─────────────────────────────────────────────────────────┘
这篇文章对您有帮助吗?
Yes
No
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册