- Snowflake 教程
- Snowflake - 首頁
- Snowflake - 簡介
- Snowflake - 資料架構
- Snowflake - 功能架構
- Snowflake - 如何訪問
- Snowflake - 版本
- Snowflake - 定價模型
- Snowflake - 物件
- Snowflake - 表和檢視型別
- Snowflake - 登入
- Snowflake - 資料倉庫
- Snowflake - 資料庫
- Snowflake - 模式
- Snowflake - 表和列
- Snowflake - 從檔案載入資料
- Snowflake - 有用的示例查詢
- Snowflake - 監控使用情況和儲存
- Snowflake - 快取
- 將資料從 Snowflake 解除安裝到本地
- 外部資料載入(從 AWS S3)
- 外部資料解除安裝(到 AWS S3)
- Snowflake 資源
- Snowflake - 快速指南
- Snowflake - 有用資源
- Snowflake - 討論
Snowflake - 外部資料載入
Snowflake 也支援客戶端的雲端儲存。這意味著客戶端可以在其雲中擁有資料,並且可以透過引用位置將其載入到 Snowflake 中。目前,Snowflake 支援 3 個雲 – AWS S3、Microsoft Azure 和 Google Cloud Platform 位置。這些被稱為外部階段。但是,Snowflake 提供 Snowflake 託管的階段,這些階段被稱為內部階段。
外部階段是客戶端位置,而內部階段在使用者使用其本地系統目錄時使用。
要從外部雲上傳資料,需要進行以下設定:
Snowflake 中現有的資料庫和模式,資料必須載入到其中。
指向 AWS S3 儲存桶的外部階段設定。
檔案格式,它定義載入到 AWS S3 中的檔案的結構。
在本章中,我們將討論如何設定這些要求並將資料載入到表中。
我們已經建立了一個名為 TEST_DB 的資料庫、名為 TEST_SCHEMA_1 的模式和名為 TEST_TABLE 的表。如果這些不存在,請按照前面章節中的說明建立這些。
可以透過 Snowflake 的使用者介面以及使用 SQL 來設定外部階段。
使用 UI
要建立外部階段,請按照以下說明操作:
登入 Snowflake。單擊頂部功能區中顯示的資料庫。在資料庫檢視中,單擊名為 TEST_DB 的資料庫名稱。現在,單擊階段選項卡。現在,單擊頂部顯示的建立按鈕,如下面的螢幕截圖所示:
將彈出建立階段對話方塊,在列表中選擇 amazon|s3 並單擊下一步按鈕,如下所示:
它將進入下一個螢幕,使用者應在其中輸入以下詳細資訊:
名稱 - 這是使用者定義的外部階段名稱。相同的名稱將用於將資料從階段複製到表。
模式名稱 - 選擇包含要載入資料的表的模式名稱。
URL - 提供來自 Amazon 的 S3 url。它基於儲存桶名稱和金鑰是唯一的。
AWS 金鑰 ID - 請輸入您的 AWS 金鑰 ID
AWS 金鑰 - 輸入您的金鑰以透過您的 AWS 連線
加密主金鑰 - 提供任何加密金鑰。
提供這些詳細資訊後,單擊完成按鈕。下面的螢幕截圖描述了上述步驟:
使用者可以在視圖面板中看到新建立的外部階段。
使用 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
其他內容可以保持不變。輸入詳細資訊後,單擊完成按鈕。下面的螢幕截圖顯示了上述詳細資訊:
使用者將能夠在視圖面板中看到已建立的檔案格式。
使用 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 載入資料。
使用者可以執行以下查詢以檢視給定階段中存在的所有檔案:
LS @<external_stage_name>
現在,要載入資料,請執行以下查詢:
語法
COPY INTO @<database_name>.<schema_name>.<table_name>
FROM @<database_name>.<schema_name>.<ext_stage_name>
FILES=('<file_name>')
FILE_FORMAT=(FORMAT_NAME=<database_name>.<schema_name>.<file_format_name>);
示例
COPY INTO @test_db.test_schema_1.TEST_USER
FROM @test_db.test_schema_1.EXT_STAGE
FILES=('data.csv')
FILE_FORMAT=(FORMAT_NAME=test_db.test_schema_1.CSV);
執行上述查詢後,使用者可以透過執行以下簡單查詢來驗證表中的資料:
Select count(*) from Test_Table
如果使用者想要上傳外部階段中存在的所有檔案,則無需傳遞“FILES=(<file_name>)”。