Option 1: Load data with the Snowpipe REST API¶
本主题介绍如何调用公共 REST 端点来加载数据并检索加载历史记录报告。这些说明假定您已完成 Data loading preparation using the Snowpipe REST API 中的设置说明。
Load data¶
加载分两步进行:
- 第 1 步:
暂存数据文件:
内部暂存区:使用 PUT 命令暂存文件。
外部暂存区:使用云提供商提供的客户端工具将文件复制到暂存区位置(Amazon S3、Google Cloud Storage 或 Microsoft Azure)。
- 第 2 步:
向 insertFiles REST 端点提交请求以加载暂存数据文件。
为方便起见,本主题提供了说明如何提交 REST 端点的示例 Java 和 Python 程序。
Java SDK 的示例程序¶
此示例使用 Bouncy Castle Crypto APIs (https://www.bouncycastle.org/java.html)。为了编译和运行此示例,必须在类路径中包含以下 JAR 文件:
提供商 JAR 文件 (
bcprov-jdkversions.jar)PKIX / CMS / EAC / PKCS / OCSP / TSP / OPENSSL JAR 文件 (
bcpkix-jdkversions.jar)
其中, versions 指定 JAR 文件支持的 JDK 版本。
在编译示例代码之前,请替换以下占位符值:
PRIVATE_KEY_FILE = "/<path>/rsa_key.p8"指定您在 Use key pair authentication & key rotation 中创建的私钥文件的本地路径(在 Data loading preparation using the Snowpipe REST API 中)。
return "<private_key_passphrase>"ingetPrivateKeyPassphrase()如果生成了加密密钥,请实现
getPrivateKeyPassphrase()方法以返回用于解密该密钥的密码。host = "<account_identifier>.snowflakecomputing.cn"以 URL 的形式指定主机信息。
账户标识符的首选格式如下:
organization_name-account_nameSnowflake 组织和账户的名称。有关详细信息,请参阅 格式 1(首选):您所在组织的账户名称。
如果需要,还可以指定 账户定位器,以及托管该账户的 区域 和 云平台。有关详细信息,请参阅 格式 2:区域中的账户定位器。
user = "<user_login_name>"指定 Snowflake 登录名。
pipe = "<db_name>.<schema_name>.<pipe_name>"指定用于加载数据的管道的完全限定名称。
files.add("<path>/<filename>", <file_size_in_bytes>)在文件对象列表中指定要加载的文件的路径。
(可选)指定每个文件的大小(以字节为单位),以避免在 Snowpipe 计算加载数据所需的操作时出现延迟。
指定的路径必须 相对于 文件所在的暂存区。包括每个文件的完整名称,包括文件扩展名。例如,gzip 压缩的 CSV 文件的扩展名可能是
.csv.gz。
Python SDK 的示例程序¶
在执行示例代码之前,请替换以下占位符值:
<private_key_path>指定您在 Use key pair authentication & key rotation 中创建的私钥文件的本地路径(在 Data loading preparation using the Snowpipe REST API 中)。
return "<private_key_passphrase>"inget_private_key_passphrase()如果生成了加密密钥,请实现
get_private_key_passphrase()函数以返回用于解密该密钥的密码。account='<account_identifier>'指定账户的唯一标识符(由 Snowflake 提供)。请参阅
host描述。host='<account_identifier>.snowflakecomputing.cn'为 Snowflake 账户指定唯一的主机名。
账户标识符的首选格式如下:
organization_name-account_nameSnowflake 组织和账户的名称。有关详细信息,请参阅 格式 1(首选):您所在组织的账户名称。
如果需要,还可以指定 账户定位器,以及托管该账户的 区域 和 云平台。有关详细信息,请参阅 格式 2:区域中的账户定位器。
user='<user_login_name>'指定 Snowflake 登录名。
pipe='<db_name>.<schema_name>.<pipe_name>'指定用于加载数据的管道的完全限定名称。
file_list=['<path>/<filename>', '<path>/<filename>']|staged_file_list=[StagedFile('<path>/<filename>', <file_size_in_bytes>), StagedFile('<path>/<filename>', <file_size_in_bytes>)]在文件对象列表中指定要加载的文件的路径。
指定的路径必须 相对于 文件所在的暂存区。包括每个文件的完整名称,包括文件扩展名。例如,gzip 压缩的 CSV 文件的扩展名可能是
.csv.gz。(可选)指定每个文件的大小(以字节为单位),以避免在 Snowpipe 计算加载数据所需的操作时出现延迟。
View the load history¶
Snowflake 提供 REST 端点 和 Snowflake Information Schema 表函数,用于查看加载历史记录:
REST 端点:
Information Schema 表函数:
Account Usage 视图:
请注意,与调用 REST 端点不同,查询 Information Schema 表函数或账户使用视图需要运行仓库。
Delete staged files¶
在成功加载数据并且不再需要这些文件后删除暂存文件。有关信息,请参阅 在 Snowpipe 加载数据后删除暂存文件。