■本記事の目的
Snowflakeのデータロードを理解する。
ユーザー管理のAmazonS3からSnowflakeにデータロードを行います。
S3バケットとフォルダおよび取込用のテストデータ(CSV形式)は、事前に作成済みとします。
■前回の記事
■概要
前回までで、ロードするためのオブジェクト作成を完了したため、空テーブルを作成しデータをロードします。
COPY INTO テーブルによりロードを行います。
■テーブルを作成する。
データをロードするためには、テーブルオブジェクトが必要になります。
ファイルに合わせて、列を定義してください。
USE DATABASE <データベース>;
USE SCHEAMA <スキーマ>;
CREATE TABLE <テーブル>
(
<COLUMN_NAME_1> <DATA_TYPE>,
<COLUMN_NAME_2> <DATA_TYPE>,
・
・
・
<COLUMN_NAME_N> <DATA_TYPE>
)
/*他テーブルオプションなど*/
;
例)
USE DATABASE TEST_DB;
USE SCHEAMA TEST_SC;
CREATE TABLE TEST_TB
(
TARGET_YM VARCHAR(6),
ORG_CD VARCHAR(10),
ORG_NM VARCHAR(200),
AC_CD VARCHAR(10),
AC_NM VARCHAR(200),
BG_AM NUMBER(28,0),
RS_AM NUMBER(28,0),
RG_TS TIMESTAMP_NTZ
)
;
■データをロードする。
COPY INTO文でデータをロードします。
この処理には、ウェアハウスを指定してください。
USE ROLE <ロール名>;
USE WAREHOUSE <ウェアハウス名>;
USE DATABASE <データベース名>;
USE ROLE <スキーマ名>;
COPY INTO <テーブル名>
FROM @<外部ステージ名>
;
例)
USE ROLE SYSADMIN;
USE WAREHOUSE SYSADMIN\XS;
USE DATABASE TEST_DB;
USE ROLE TEST_SC;
COPY INTO TEST_TB
FROM @TEST_STAGE
;
■ロードの確認
正常にロードされると、ワークシートでは以下のように出力されます。
履歴を確認する場合、以下で確認可能です。
/*14日以内のCOPY INTOによるロードを確認する。*/
SELECT * FROM INFORMATION_SCHEMA.LOAD_HISTORY;
■あとがき
以上、全4回に渡って、S3からデータロードを行ってきました。
直近の案件で、Pythonから構造化データのExcelファイルを取り込む検証というのも行ったため、全2回でご紹介させていただければと思います。