🔖
Snowflakeのファイルフォーマット
ファイルフォーマットオブジェクトを作成することで事前にフォーマットを定義できます。
早速作ってみましょう!
ファイルフォーマットの作成
作業用スキーマの作成
これは別に作成しなくてもOK。ただ整理しやすいので作成しているだけです。
CREATE OR REPLACE SCHEMA MANAGE_DB.file_formats;
ファイルフォーマットオブジェクトの作成
CREATE OR REPLACE file format MANAGE_DB.file_formats.my_file_format;
作成時にオプションを指定していないので下記のとおりデフォルトの値としてオブジェクトが作成されました。
ポイントとして
- ファイルタイプがCSV
- フィールド区切り文字がカンマ
- スキップヘッダーが0
- 文字コードがUTF-8
property | property_type | property_value | property_default |
---|---|---|---|
TYPE | String | CSV"" | CSV"" |
RECORD_DELIMITER | String | \n"" | \n"" |
FIELD_DELIMITER | String | , | , |
FILE_EXTENSION | String | ||
SKIP_HEADER | Integer | 0 | 0 |
DATE_FORMAT | String | AUTO"" | AUTO"" |
TIME_FORMAT | String | AUTO"" | AUTO"" |
TIMESTAMP_FORMAT | String | AUTO"" | AUTO"" |
BINARY_FORMAT | String | HEX"" | HEX"" |
ESCAPE | String | NONE"" | NONE"" |
ESCAPE_UNENCLOSED_FIELD | String | \"" | \"" |
TRIM_SPACE | Boolean | FALSE | FALSE |
FIELD_OPTIONALLY_ENCLOSED_BY | String | NONE"" | NONE"" |
NULL_IF | List | [""\N""] | [""\N""] |
COMPRESSION | String | AUTO"" | AUTO"" |
ERROR_ON_COLUMN_COUNT_MISMATCH | Boolean | TRUE | TRUE |
VALIDATE_UTF8 | Boolean | TRUE | TRUE |
SKIP_BLANK_LINES | Boolean | FALSE | FALSE |
REPLACE_INVALID_CHARACTERS | Boolean | FALSE | FALSE |
EMPTY_FIELD_AS_NULL | Boolean | TRUE | TRUE |
SKIP_BYTE_ORDER_MARK | Boolean | TRUE | TRUE |
ENCODING | String | UTF8"" | UTF8"" |
COPYコマンドでの使い方
作成したファイルフォーマットオブジェクトの使い方はとても簡単です。
オプションのfile_format = (FORMAT_NAME={作成したフォーマット名})で指定するだけです。
COPY INTO OUR_FIRST_DB.PUBLIC.ORDERS_EX
FROM @MANAGE_DB.external_stages.aws_stage_errorex
file_format= (FORMAT_NAME=MANAGE_DB.file_formats.my_file_format)
files = ('OrderDetails_error.csv');
SKIP_HEADERの設定を変更してみる
設定変更はALTERコマンドで行えます。
ALTER file format MANAGE_DB.file_formats.my_file_format
SET SKIP_HEADER = 1;
設定を確認してみると・・・property_valueの値が0→1に変わっています。
property | property_type | property_value | property_default |
---|---|---|---|
SKIP_HEADER | Integer | 1 | 0 |
ファイルタイプをJSONに変更してみる
ALTER file format MANAGE_DB.file_formats.my_file_format
SET TYPE=JSON;
しかしエラーとなりました。
SQL compilation error: File format type cannot be changed.
つまり一度作成したファイルタイプは変更ができません。
なので再作成するしか方法がないかもしれません。
再作成するとJSON形式で作成できました。
CREATE OR REPLACE file format MANAGE_DB.file_formats.my_file_format
TYPE=JSON
property | property_type | property_value | property_default |
---|---|---|---|
TYPE | String | JSON"" | CSV"" |
Discussion