Snowflake - 外部資料解除安裝



Snowflake 也支援客戶端的雲端儲存。這意味著客戶端可以從 Snowflake 中匯出其雲中的資料。目前,Snowflake 支援 3 個雲 - AWS S3、Microsoft Azure 和 Google Cloud Platform 位置。這些被稱為外部階段。但是,Snowflake 提供了 Snowflake 託管的階段,這些階段被稱為內部階段。

外部階段是客戶端端位置,而內部階段是在使用者使用其本地系統目錄時使用的。

要將資料解除安裝到外部雲,需要進行以下設定:

  • Snowflake 中現有的資料庫和模式,該資料庫和模式中將資料解除安裝到 AWS S3。

  • 指向 AWS S3 儲存桶的外部階段設定。

  • 檔案格式定義載入到 AWS S3 中的檔案的結構。

在本章中,我們將討論如何設定這些要求以及如何將資料從表解除安裝到 S3。

  • 我們已經建立了一個名為 TEST_DB 的資料庫、名為 TEST_SCHEMA_1 的模式和名為 TEST_TABLE 的表。如果這些不可用,請按照前面章節中的說明建立這些表。

  • 可以透過 Snowflake 的使用者介面以及使用 SQL 來設定外部階段。

使用 UI

要建立外部階段,請按照以下說明操作:

登入 Snowflake。單擊頂部功能區中顯示的資料庫。在資料庫檢視中,單擊名為 TEST_DB 的資料庫名稱。接下來,單擊階段選項卡,然後單擊頂部顯示的建立按鈕,如下面的螢幕截圖所示:

Using UI

它將彈出建立階段對話方塊,在列表中選擇 amazon|s3,然後單擊下一步,如下所示:

Using UI Create Stage

它將進入下一個螢幕,使用者應在其中輸入以下詳細資訊:

  • 名稱 - 這是使用者定義的外部階段名稱。相同的名稱將用於將資料從階段複製到表。

  • 模式名稱 - 選擇包含要載入資料的表的模式名稱。

  • URL - 提供來自 Amazon 的 S3 url。它基於儲存桶名稱和金鑰是唯一的。

  • AWS 金鑰 ID - 請輸入您的 AWS 金鑰 ID。

  • AWS 金鑰 - 輸入您的金鑰以透過您的 AWS 連線。

  • 加密主金鑰 - 如果有,請提供加密金鑰。

提供詳細資訊後,單擊完成按鈕。以下螢幕截圖描述了上述步驟:

Create Stage Process

使用者可以在“檢視”面板中看到新建立的外部階段。

使用 SQL

使用 SQL 建立外部階段非常容易。只需執行以下查詢,提供所有詳細資訊(例如名稱、AWS 金鑰、密碼、主金鑰),它將建立該階段。

CREATE STAGE "TEST_DB"."TEST_SCHEMA_1".Ext_S3_stage URL = 's3://***/***** 
CREDENTIALS = (AWS_KEY_ID = '*********' AWS_SECRET_KEY = '********') ENCRYPTION = (MASTER_KEY = '******');

檔案格式定義上傳到 S3 的檔案的結構。如果檔案結構與表結構不匹配,則載入將失敗。

使用 UI

要建立檔案格式,請按照以下說明操作。

登入 Snowflake 並單擊頂部功能區中顯示的資料庫。在資料庫檢視中,單擊資料庫名稱 TEST_DB。

接下來,單擊檔案格式選項卡,然後單擊頂部顯示的建立按鈕。它將彈出建立檔案格式對話方塊。輸入以下詳細資訊:

  • 名稱 - 檔案格式的名稱。

  • 模式名稱 - 建立的檔案格式只能在給定的模式中使用。

  • 格式型別 - 檔案格式的名稱。

  • 列分隔符 - 如果 csv 檔案已分隔,請提供檔案分隔符。

  • 行分隔符 - 如何識別新行。

  • 要跳過的標題行 - 如果提供了標題,則為 1,否則為 0。

其他內容可以保持原樣。輸入這些詳細資訊後,單擊完成按鈕。

以下螢幕截圖顯示了上述詳細資訊:

Creating File Format Process

使用者將能夠在“檢視”面板中看到建立的檔案格式。

使用 SQL

使用 SQL 建立檔案格式非常容易。只需執行以下查詢,並提供如下所示的所有必要詳細資訊。

CREATE FILE FORMAT "TEST_DB"."TEST_SCHEMA_1".ext_csv TYPE = 'CSV' COMPRESSION = 'AUTO' 
FIELD_DELIMITER = ',' RECORD_DELIMITER = '\n' SKIP_HEADER = 0 FIELD_OPTIONALLY_ENCLOSED_BY = 
'NONE' TRIM_SPACE = FALSE ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE ESCAPE = 'NONE' 
ESCAPE_UNENCLOSED_FIELD = '\134' DATE_FORMAT = 'AUTO' TIMESTAMP_FORMAT = 'AUTO' NULL_IF = ('\\N');

將資料解除安裝到 S3

在本章中,我們討論了設定所有必需的引數,例如階段、檔案格式、資料庫,以將資料解除安裝到 S3。

現在,要解除安裝資料,請執行以下查詢:

語法

COPY INTO @<database_name>.<schema_name>.<external_stage_name>
FROM (SELECT * FROM <table_name>)
FILE_FORMAT=(FORMAT_NAME=<database_name>.<schema_name>.<file_format_name>);

示例

COPY INTO @test_db.test_schema_1.EXT_Stage
FROM (SELECT * FROM TEST_TABLE)
FILE_FORMAT=(FORMAT_NAME=test_db.test_schema_1.CSV);
廣告