提问者:小点点

使用SNOWPIPE时如何清除Stage或从Stage中删除文件?


雪花提供了雪花管道来将数据复制到一个表中,只要它在一个阶段中可用,但是它错过了清除选项。
还有其他方法来实现这一点吗?


共1个答案

匿名用户

在使用雪管的情况下,没有直接的方法来实现吹扫,但可以通过雪管、溪流和任务的组合来实现

假设要加载的数据文件驻留在GCS存储桶中

步骤1:在雪花上创建一个带有外部舞台的雪管
请参阅此文档

// Create a Staging Table
CREATE TABLE SNOWPIPE_DB.PUBLIC.GCP_STAGE_TABLE (COL1 STRING);

// Create Destination Table
CREATE TABLE SNOWPIPE_DB.PUBLIC.GCP_DESTINATION_TABLE (COL1 STRING);

// Create an External Stage
CREATE STAGE SNOWPIPE_DB.PUBLIC.GCP_STAGE
  URL='gcs://bucket/files/'
  STORAGE_INTEGRATION = '<STORAGE_INTEGRATION>'; 

// Create Snowpipe
CREATE PIPE SNOWPIPE_DB.PUBLIC.GCP_Pipe
  AUTO_INGEST = true
  INTEGRATION = '<NOTIFICATION_INTEGRATION>'
  AS
  COPY INTO SNOWPIPE_DB.PUBLIC.GCP_STAGE_TABLE
  FROM @SNOWPIPE_DB.PUBLIC.GCP_STAGE;

步骤2:在Table上创建StreamGCP_STAGE_TABLE

流记录对表所做的数据操作语言(DML)更改,包括有关插入、更新和删除的信息。
请参阅本文档

// Create Stream in APPEND_ONLY Mode since we are concerned with INSERTS only

CREATE OR REPLACE STREAM SNOWPIPE_DB.PUBLIC.RESPONSES_STREAM
  ON TABLE SNOWPIPE_DB.PUBLIC.GCP_STAGE_TABLE
  APPEND_ONLY = TRUE;

现在,每当一些数据上传到地面军事系统存储桶上时,GCP\u STAGE\u表都会被雪管填充,我们的流RESPONSES\u流

RESPONSES\u-STREAM如下所示