こんにちは、三村です。ブログを読んでいただき、ありがとうございます。
私は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をご紹介いたします。