こんにちは、yokochanです!
最近「Snowflake」の機能が進化し続けているのをみなさんご存じでしょうか?
なかでもローカルファイルをSnowflakeに直接アップロードできる”Load Data”機能がとても便利だなと感じています。(以前はSnowSQLからコマンドを打ってステージングして、、という作業が必要でした。)
しかしつい先日、CSVファイルをLoad Dataでアップロードしようとしたら文字コードエラーが出てしまったので、そのときの対処法を書きたいと思います。
発生したエラー
Load Dataを試みた時に発生したエラーは以下のようなものです。
どうやら文字コードがUTF8ではないと怒られているようです。
おそらく取り込んだcsvの文字コードがSHIFTJISだったものだと思われます。
文字コードが違うと言われているので指定すればいいじゃん!と思い、再度見てみましたが、、
文字コードを指定する項目がない、、困った。。
対処方法
①SQLをシートで実行する
Load Data画面の左下にある「Show SQL」を選択します。
すると以下のようにSQLのコードが出てきます。
画面右上のアイコンからワークシートを開きます。
ワークシートを開いた後、「TIMESTAMP_FORMAT = AUTO」の下に以下のコードを追加します。
ENCODING = 'SHIFTJIS'
そしてワークシートのコードを実行すると無事読込みが完了しました。
②ファイルフォーマットを作成する
①のやり方よりもこちらの方が簡単で今後の使いまわしもしやすいのでおススメです。
①で記載したワークシートのFILE_FORMATの部分をまるっと保存してしまう方法です。
まず、CREATE FILE FORMATを使ってFILE FORMATを作成します。
CREATE FILE FORMAT CSV_SHIFTJIS
TYPE = CSV,
SKIP_HEADER = 1,
FIELD_DELIMITER = ',',
TRIM_SPACE = FALSE,
FIELD_OPTIONALLY_ENCLOSED_BY = NONE,
DATE_FORMAT = AUTO,
TIME_FORMAT = AUTO,
TIMESTAMP_FORMAT = AUTO,
ENCODING = 'SHIFTJIS'
FILE_FORMATを作成すると、Load Data画面で作成したフォーマットを選択できるようになります。
これを選択して取込を行うと正常にテーブルへデータが書き込まれました!
おわりに
今回紹介したLoad Data機能ですが、一応プレビュー段階(2023年6月時点)みたいなので今後のさらなる機能拡充に期待したいです。
ここまでオプション選択できるなら文字コードも選択できてほしい、、なんならオプション全部選択できるようにしてほしい、、、