こんにちは。ozawaです。
今日はSnowCLIを用いて、ローカルのcsvからテーブルを作成してみようと思います。
ここで、ローカルのcsvからテーブルを作成する手順のおさらいです。
① ローカルのcsvをSTAGEにアップ
② テーブルをCREATE
③ STAGEからテーブルをINSERT
これらの手順をSnowCLIで確認していきます。
また、SnowSQLでも同様の操作ができるので、SnowCLIとSnoSQLの操作を照らし合わせてみます。
ローカルcsvからテーブルを作成(SnowSQL vs SnowCLI)
今回は、以下のような都道府県コード・名称を格納したcsvから、テーブルを作ってみます。
⓪ 環境に入る
SnowSQLの場合
SnowSQLコマンドの初回時、アカウント名やユーザ名、DB名等を入力します。
snowsql -a xxxxx.ap-northeast-1.aws -u USER -d OZAWADB -s PUBLIC -r ROLE -w WH
SnowCLIの場合
「snow connection add」コマンドで、SnowSQLと同様にアカウント名やユーザ名、DB名等を入力します。
snow connection add
※ 接続方法の詳細は、mimuraさんのこちらのブログを参照ください!!
① ローカルcsvをSTAGEにアップ
ローカルcsvをSTAGEにアップするために、名前付きSTAGEを作成し、名前付きSTAGEにcsvをアップしていきます。
SnowSQLの場合
名前付きSTAGEを作成するには、CREATE STAGEを使用し、名前付きSTAGEにcsvをアップする作業はPUTコマンドを使用します。
//「TEST」STAGEを作成
CREATE STAGE @TEST;
//ローカルのtest.csvファイルをSTAGEにアップ
PUT "C:\xxxxx\test.csv" @TEST;
SnowCLIの場合
CREATE STAGEの代わりに「snow object stage」コマンドを使用し、PUTコマンドの代わりにアップ作業では「snow object stage copy」コマンドを使用します。
//「TEST」STAGEを作成
$ snow object stage create test;//ローカルのtest.csvファイルをSTAGEにアップ $ snow object stage copy C:/xxxxx/test.csv @test
② テーブルを作成する
csvデータのINSERT場所を作るために、テーブルをCREATEします。
SnowSQLの場合
CREATE TABLE文を叩きます。
//「TEST」テーブルを作成
CREATE TABLE TEST (PREF_CODE CHAR(2), PREF_NAME VARCHAR(4));
SnowCLIの場合
SnowCLIにはテーブル作成の特定コマンドがないので、「snow sql -q <QUERY>」でCREATE TABLE文を呼び出します。
//「TEST」テーブルを作成
snow sql -q 'CREATE TABLE TEST_CLI (PREF_CODE CHAR(2), PREF_NAME VARCHAR(4))'
③ STAGEからテーブルにデータをINSERT
テーブルを作成し、STAGE上にcsvファイルを格納できたので、csvファイルデータをテーブルに流し込みます。
SnowSQLの場合
COPY INTOでTESTテーブルにデータを挿入します。
今回のcsvがヘッダ有・SJISだったので、FILE_FORMATで設定を追加します。
COPY INTO TEST FROM @TEST FILE_FORMAT = (SKIP_HEADER = 1, ENCODING = 'SHIFTJIS');
SnowCLIの場合
COPY INTO文もSnowCLIには特定コマンドがないので、「snow sql -q <QUERY>」を使用します。
snow sql -q 'COPY INTO TEST FROM @TEST FILE_FORMAT = (SKIP_HEADER = 1, ENCODING = 'SHIFTJIS')'
COPY INTO文もSnowCLIには特定コマンドがないので、「snow sql -q <QUERY>」を使用します。
以上の手順を踏むと、Snowflake上にテーブルを展開できます。
SnowCLIとSnowSQLの所感
CREATE TABLEやCOPY INTOの作業のように、SnowCLIには、まだ整備されていないコマンドが多くあります。
また、今回のテーブル作成手順の中では、実はSnowSQLのほうが記述したクエリの文字数が少ないので、基本的なSnowflake動作に関しては、SnowSQLのほうがやや楽という点はあります。
SnowCLIの本領が発揮されるのが、Snowpark(関数やプロシージャ)やStreamlit、Container、Appといった操作手順が多いオブジェクトになります。
SnowCLIにはこれらのオブジェクトの専用コマンドが用意されており、少ない手順で作業できます。
SnowCLIによるAppの開発手順や、Streamlitの開発手順のブログを参照ください。
おわりに
truestarでは、Snowflake導入検討、導入支援や環境構築まで幅広くサポート可能です。
Snowflakeに゙興味がある、導入済みだけどもっとうまく活用したい等々ありましたら、ぜひこちらから相談ください!
また、truestarではSnowflake Marketplaceにて、加工済みオープンデータを無償提供するPrepper Open Data Bank、全国の飲食店の情報を集めたデータセットの販売を行っております。(サービスリンク)
これまでのSnowflakeに関する記事はこちら