【Snowflake】Snowflake ~ File Format ~

■ はじめに

Snowflake で File Format (ファイルフォーマット) を
扱うことになったので、メモしておく

目次

【1】CREATE FILE FORMAT
 1)サンプル
 2)補足:一時的なファイルフォーマットについて
【2】確認
 方法1)SHOW FILE FORMATS
 方法2)DESCRIBE FILE FORMAT <name>
 方法3)SELECT * FROM FILE_FORMATS
【3】DROP FILE FORMAT
【4】権限付与

【1】CREATE FILE FORMAT

* 「CREATE FILE FORMAT」で独自のファイルフォーマットが定義できる

https://docs.snowflake.com/ja/sql-reference/sql/create-file-format.html

1)サンプル

CREATE OR REPLACE FILE FORMAT demo_format
  TYPE = CSV
  FIELD_DELIMITER = ','
  COMMENT = 'This is a demo'
;

2)補足:一時的なファイルフォーマットについて

* 一時的なファイルフォーマットについては、特に作成せずに
 オプション「FILE_FORMAT」で済ますのがいいかも。

例:CREATE STAGE の場合

CREATE OR REPLACE TEMPORARY STAGE sample_stage
  URL = 's3://your-s3-bucket/demo/sample/'
  STORAGE_INTEGRATION = sample_integ
  -- ★ここに注目★
  FILE_FORMAT = (
    TYPE=CSV FIELD_DELIMITER='\t'
    SKIP_HEADER=1
    FIELD_OPTIONALLY_ENCLOSED_BY='"'
   )

【2】確認

方法1)SHOW FILE FORMATS

* 「SHOW FILE FORMATS」で一覧表示してくれる
* 「SHOW FILE FORMATS LIKE '%xxx%'」などで絞り込み可能

https://docs.snowflake.com/en/sql-reference/sql/show-file-formats.html

方法2)DESCRIBE FILE FORMAT

* 「DESCRIBE FILE FORMAT <name>」で詳細を表示
* 「DESC FILE FORMAT <name>」も可能

方法3)SELECT * FROM FILE_FORMATS

USE DATABASE your_db;
USE SCHEMA your_schema;

SELECT * FROM "your_db"."INFORMATION_SCHEMA".FILE_FORMATS;

補足:FILE_FORMATS

* 「INFORMATION_SCHEMA」内に、テーブル「FILE_FORMATS」があり
 そこで管理している模様。

【3】DROP FILE FORMAT

* ファイルフォーマットの削除

https://docs.snowflake.com/ja/sql-reference/sql/drop-file-format.html

【4】権限付与

-- 使用権限付与
GRANT USAGE
  ON ALL FILE FORMATS
  IN SCHEMA <your_db>.<your_schema>
  TO ROLE <your_role>;

-- 将来的に作成されるファイルフォーマットに対して使用権限付与
GRANT USAGE
  ON FUTURE FILE FORMATS
  IN SCHEMA <your_db>.<your_schema>
  TO ROLE <your_role>;

https://docs.snowflake.com/ja/sql-reference/sql/grant-privilege.html

関連記事

Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ SHOW / DESCRIBE ~
https://dk521123.hatenablog.com/entry/2022/02/24/231532
Snowflake ~ GRANT OWNERSHIP ~ https://dk521123.hatenablog.com/entry/2022/02/25/094250
Snowflake ~ ストレージ統合 ~
https://dk521123.hatenablog.com/entry/2022/06/29/221037
エラー「Insufficient privileges to operate」時の対応
https://dk521123.hatenablog.com/entry/2022/08/02/090439