CSVファイルをSnowflakeのテーブルに入れる

CSVファイルをSnowflakeのテーブルに入れる | Tableau-id Press -タブロイド-
表紙

こんにちは、三村です。ブログを読んでいただき、ありがとうございます。
私はSnowflakeを使っていて、手元のCSVデータをテーブルに入れたい時が多々あります。
そんなときには「SnowSQL」を使っています。今回はそのやり方をご紹介いたします。
尚、環境はWindows10です。

※以下の機能を使う方は別途マニュアルをご参照ください。
キーペア認証、キーペアローテーション、プロキシサーバー、フェデレーション認証、ブラウザベースのSSO認証
https://docs.snowflake.com/ja/user-guide/snowsql-start

「SnowSQL」はSnowflakeから提供されているCLI(コマンドプロンプトから実行するプログラム)です。

「SnowSQL」を使うとパソコンにあるCSVデータをSnowflakeのステージという領域に入れることができます。

SnowflakeのCOPY INTO コマンドで、ステージからテーブルに入れます。

2023年5月のリリースで、Snowsigthを使用して 名前付き内部ステージを作成し、ロードできるようになりました。ドラッグアンドドロップでロードできるので便利です。しかし、ユーザーステージおよびテーブルステージにロードすることはできません。

今回のこの記事ではテーブルステージにロードします。

準備

SnowSQLのインストール

以下からインストーラをダウンロードします。
https://developers.snowflake.com/snowsql/

SNOWSQL FOR WINDOWS のボタンをクリックします。

snowsql-1.2.26-windows_x86_64.msi(執筆時点の最新バージョン)がダウンロードされるので、それをクリックします。
インストーラーに従って操作します。

構成ファイルの編集

SnowSQLをインストールすると、以下に構成ファイルが作成されています。

C:\Users\ユーザー名.snowsql\config
このファイルの 12行目:accountname ~ 19行目:rolename までのコメントを外し(1文字目の#を削除)自分の環境情報を設定します。

テーブルの作成

CSVデータを入れるテーブルをSnowflakeに作成します。ロード実行時にテーブルがない場合はエラーになります。

//JO1テーブル作成
CREATE TABLE mydb.myschema.JO1 (
name varchar
,kana varchar
,date_of_birth date
,blood_type char
,height number
);

CSVファイルの作成

ロードするファイルを UTF-8 の CSV形式で準備します。

name,kana,date_of_birth,blood_type,height
大平 祥生,おおひら しょうせい,2000-04-13,A,176
川尻 蓮,かわしり れん,1997-03-02,O,173
川西 拓実,かわにし たくみ,1999-06-23,B,170
木全 翔也,きまた しょうや,2000-04-05,A,171
金城 碧海,きんじょう すかい,2000-05-06,A,178
河野 純喜,こうの じゅんき,1998-01-20,O,174
佐藤 景瑚,さとう けいご,1998-07-29,A,181
白岩 瑠姫,しろいわ るき,1997-11-19,O,175
鶴房 汐恩,つるぼう しおん,2000-12-11,A,178
豆原 一成,まめはら いっせい,2002-05-30,O,173
與那城 奨,よなしろ しょう,1995-10-25,O,180

ロード

Snowflakeへ接続

コマンドプロンプトを立ち上げ、snowsql と打ち込みます。

Put

putコマンドで、テーブルのステージへロードします。
【構文】put file://ファイルパス @データベース名.スキーマ名.%テーブル名 OVERWRITE = TRUE;

ステージの確認

Snowflakeでステージの確認を行います。
【構文】list @データベース名.スキーマ名.%テーブル名;

テーブルにコピー

ステージからテーブルにコピーします。
【構文】copy into データベース名.スキーマ名.テーブル名 from @%テーブル名 file_format = (field_optionally_enclosed_by=’0x27′ null_if=(‘null’) SKIP_HEADER =1)

テーブル内容を確認します。
【構文】select * from テーブル名

あとがき

SnowSQLでは、データベーステーブルに対するデータのロードとアンロードを含むすべての DDL および DML 操作を実行できます。

一連の作業をsqlファイルに記載して実行させることもできます。Windowsのタスクスケジューラーに登録すれば、かなり便利に利用できますね。

次回は条件によって実行するSQLを分ける等ができる、SnowParkをご紹介いたします。