개요
2024.07.04-[Snowflake] CSV 파일 로드에서 CSV 파일을 읽어 들이면서 어떤 방식으로 읽어 들일지 결정했었다. 이렇게 파일을 읽어 들일 형식을 Snowflake에서는 FILE FORMAT이라고 하는데, 이번 글에서는 FILE FORMAT과 관련된 부분은 정리해 본다.
FILE FORMAT
FILE FORMAT은 파일에서 테이블로 데이터를 로드할 때 파일의 형식을 설명하고 파일의 데이터를 해석하고 처리하는 방법을 지정하는 객체이다.
Snowflake에서는 CSV, JSON, AVRO, ORC, PARQUET, XML 형식의 데이터에 대한 FILE FORMAT을 지정할 수 있다. 파일 확장자에 따라 지정할 수 있는 속성이 달라 속성과 관련해서는 공식 문서를 참조하는 것이 좋겠다.
관련 문서 : https://docs.snowflake.com/en/sql-reference/sql/create-file-format#syntax
참고로 CSV, JSON 파일을 로드하는 기본적인 FILE FORMAT은 다음과 같다.
- CSV
CREATE OR REPLACE FILE FORMAT mycsvformat
TYPE = 'CSV'
FIELD_DELIMITER = ',' # 구분자
SKIP_HEADER = 1; # 헤더 행 수
- JSON
CREATE OR REPLACE FILE FORMAT myjsonformat
TYPE = 'JSON'
STRIP_OUTER_ARRAY = TRUE;
FILE FORMAT은 다른 데이터 소스에서 Snowflake로 데이터를 복사하는 COPY INTO 문에 지정하여 사용할 수 있다. (COPY INTO 문은 추후에 다시 알아본다.)
생성
FILE FORMAT은 위에서 봤듯이 CREATE 문으로 생성할 수 있다.
CREATE OR REPLACE FILE FORMAT mycsvformat
TYPE = 'CSV'
FIELD_DELIMITER = ',' # 구분자
SKIP_HEADER = 1; # 헤더 행 수
목록 조회
생성되어 있는 FILE FORMAT은 SHOW 명령으로 확인할 수 있다.
SHOW FILE FORMATS;
상세 조회
특정 FILE FORMAT에 대한 상세 내용은 DESCRIBE 명령으로 확인할 수 있다.
DESCRIBE FILE FORMAT <database>.<schema>.<file_format>;
-- 예시
DESCRIBE FILE FORMAT library_card_catalog.public.json_file_format;
삭제
생성한 FILE FORMAT은 DROP 문으로 삭제할 수 있다.
DROP FILE FORMAT <fiele_format>;
-- 예시
DROP FILE FORMAT SOCIAL_MEDIA_FLOODGATES.PUBLIC.JSON_FILE_FORMAT;
참고 문서
https://docs.snowflake.com/en/sql-reference/sql/create-file-format#syntax
https://docs.snowflake.com/ko/user-guide/data-load-internal-tutorial-create-file-format
https://docs.snowflake.com/en/sql-reference/sql/alter-file-format