CREATE FILE FORMATยถ
Snowflake ํ ์ด๋ธ์ ์ก์ธ์คํ๊ฑฐ๋ ๋ก๋ฉํ ์คํ ์ด์ง ์ํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ค๋ช ํ๋ ๋ช ๋ช ๋ ํ์ผ ํ์์ ๋ง๋ญ๋๋ค.
์ด ๋ช ๋ น์ ๋ค์ ๋ณํ์ ์ง์ํฉ๋๋ค.
CREATE OR ALTER FILE FORMAT: ํ์ผ ํ์์ด ์๋ ๊ฒฝ์ฐ ๋ช ๋ช ๋ ํ์ผ ํ์์ ๋ง๋ค๊ฑฐ๋ ๊ธฐ์กด ํ์ผ ํ์์ ๋ณ๊ฒฝํฉ๋๋ค.
- ์ฐธ๊ณ ํญ๋ชฉ:
ALTER FILE FORMAT , DROP FILE FORMAT , SHOW FILE FORMATS , DESCRIBE FILE FORMAT
COPY INTO <์์น> , COPY INTO <ํ ์ด๋ธ> , CREATE OR ALTER <์ค๋ธ์ ํธ>
๊ตฌ๋ฌธยถ
CREATE [ OR REPLACE ] [ { TEMP | TEMPORARY | VOLATILE } ] FILE FORMAT [ IF NOT EXISTS ] <name>
[ TYPE = { CSV | JSON | AVRO | ORC | PARQUET | XML | CUSTOM} [ formatTypeOptions ] ]
[ COMMENT = '<string_literal>' ]
์ฌ๊ธฐ์
formatTypeOptions ::= -- If TYPE = CSV COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE RECORD_DELIMITER = '<string>' | NONE FIELD_DELIMITER = '<string>' | NONE MULTI_LINE = TRUE | FALSE FILE_EXTENSION = '<string>' PARSE_HEADER = TRUE | FALSE SKIP_HEADER = <integer> SKIP_BLANK_LINES = TRUE | FALSE DATE_FORMAT = '<string>' | AUTO TIME_FORMAT = '<string>' | AUTO TIMESTAMP_FORMAT = '<string>' | AUTO BINARY_FORMAT = HEX | BASE64 | UTF8 ESCAPE = '<character>' | NONE ESCAPE_UNENCLOSED_FIELD = '<character>' | NONE TRIM_SPACE = TRUE | FALSE FIELD_OPTIONALLY_ENCLOSED_BY = '<character>' | NONE NULL_IF = ( '<string>' [ , '<string>' ... ] ) ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE EMPTY_FIELD_AS_NULL = TRUE | FALSE SKIP_BYTE_ORDER_MARK = TRUE | FALSE ENCODING = '<string>' | UTF8 -- If TYPE = JSON COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE DATE_FORMAT = '<string>' | AUTO TIME_FORMAT = '<string>' | AUTO TIMESTAMP_FORMAT = '<string>' | AUTO BINARY_FORMAT = HEX | BASE64 | UTF8 TRIM_SPACE = TRUE | FALSE MULTI_LINE = TRUE | FALSE NULL_IF = ( '<string>' [ , '<string>' ... ] ) FILE_EXTENSION = '<string>' ENABLE_OCTAL = TRUE | FALSE ALLOW_DUPLICATE = TRUE | FALSE STRIP_OUTER_ARRAY = TRUE | FALSE STRIP_NULL_VALUES = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE IGNORE_UTF8_ERRORS = TRUE | FALSE SKIP_BYTE_ORDER_MARK = TRUE | FALSE -- If TYPE = AVRO COMPRESSION = AUTO | GZIP | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE TRIM_SPACE = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE NULL_IF = ( '<string>' [ , '<string>' ... ] ) -- If TYPE = ORC TRIM_SPACE = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE NULL_IF = ( '<string>' [ , '<string>' ... ] ) -- If TYPE = PARQUET COMPRESSION = AUTO | LZO | SNAPPY | NONE SNAPPY_COMPRESSION = TRUE | FALSE BINARY_AS_TEXT = TRUE | FALSE USE_LOGICAL_TYPE = TRUE | FALSE TRIM_SPACE = TRUE | FALSE USE_VECTORIZED_SCANNER = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE NULL_IF = ( '<string>' [ , '<string>' ... ] ) -- If TYPE = XML COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE IGNORE_UTF8_ERRORS = TRUE | FALSE PRESERVE_SPACE = TRUE | FALSE STRIP_OUTER_ELEMENT = TRUE | FALSE DISABLE_AUTO_CONVERT = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE SKIP_BYTE_ORDER_MARK = TRUE | FALSE
๋ฒ ๋ฆฌ์ธํธ ๊ตฌ๋ฌธยถ
CREATE OR ALTER FILE FORMATยถ
์์ง ์กด์ฌํ์ง ์๋ ํ์ผ ํ์์ด ์๋ ๊ฒฝ์ฐ ์ ํ์ผ ํ์์ ๋ง๋ค๊ฑฐ๋ ๊ธฐ์กด ํ์ผ ํ์์ ๋ฌธ์ ์ ์๋ ํ์์ผ๋ก ๋ณํํฉ๋๋ค. CREATE OR ALTER FILE FORMAT ๋ฌธ์ CREATE FILE FORMAT ๋ฌธ์ ๊ตฌ๋ฌธ ๊ท์น์ ๋ฐ๋ฅด๋ฉฐ ALTER FILE FORMAT ๋ฌธ๊ณผ ์ ํ ์ฌํญ์ด ๋์ผํฉ๋๋ค.
์ง์๋๋ ๋ณ๊ฒฝ ์ฌํญ์๋ formatTypeOptions ๋ฐ COMMENT ์์ฑ์ ๋ํ ๋ณ๊ฒฝ์ด ํฌํจ๋ฉ๋๋ค. TYPE ์์ฑ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ CREATE OR ALTER FILE FORMAT ์ฌ์ฉ๋ฒ ๋ ธํธ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
CREATE OR ALTER [ { TEMP | TEMPORARY | VOLATILE } ] FILE FORMAT <name>
[ TYPE = { CSV | JSON | AVRO | ORC | PARQUET | XML | CUSTOM } [ formatTypeOptions ] ]
[ COMMENT = '<string_literal>' ]
ํ์ ๋งค๊ฐ ๋ณ์ยถ
name
ํ์ผ ํ์์ ๋ํ ์๋ณ์๋ฅผ ์ง์ ํ๋๋ฐ, ํ์ผ ํ์์ด ์์ฑ๋ ์คํค๋ง์ ๋ํด ๊ณ ์ ํ ์๋ณ์์ฌ์ผ ํฉ๋๋ค.
์๋ณ์ ๊ฐ์ ์ํ๋ฒณ ๋ฌธ์๋ก ์์ํด์ผ ํ๋ฉฐ ์ ์ฒด ์๋ณ์ ๋ฌธ์์ด์ ํฐ๋ฐ์ดํ(์:
"My object"
)๋ก ๋ฌถ์ง ์๋ ํ ๊ณต๋ฐฑ์ด๋ ํน์ ๋ฌธ์๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ํฐ๋ฐ์ดํ๋ก ๋ฌถ์ธ ์๋ณ์๋ ๋/์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.์์ธํ ๋ด์ฉ์ ์๋ณ์ ์๊ตฌ ์ฌํญ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
์ ํ์ ๋งค๊ฐ ๋ณ์ยถ
{ TEMP | TEMPORARY | VOLATILE }
ํ์ผ ํ์์ด ํด๋น ํ์ผ์ ์์ฑํ ์ธ์ ์ ์ง์ ๊ธฐ๊ฐ ๋์๋ง ์ง์๋๋๋ก ์ง์ ํฉ๋๋ค. ์ธ์ ์ด ๋๋๋ฉด ์์ ํ์ผ ํ์์ด ์ญ์ ๋ฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ: ๊ฐ ์์. ํ์ผ ํ์์ด
TEMPORARY
๋ก ์ ์ธ๋์ง ์์ ๊ฒฝ์ฐ ํ์ผ ํ์์ ์๊ตฌ์ ์ ๋๋ค.์๊ธฐ์น ์์ ์ถฉ๋์ ๋ฐฉ์งํ๋ ค๋ฉด ์คํค๋ง์ ์ด๋ฏธ ์๋ ํ์ผ ํ์์ ๋ฐ๋ผ ์์ ํ์ผ ํ์์ ์ด๋ฆ์ ์ง์ ํ์ง ๋ง์ญ์์ค.
์คํค๋ง์ ๋ค๋ฅธ ํ์ผ ํ์๊ณผ ์ด๋ฆ์ด ๊ฐ์ ์์ ํ์ผ ํ์์ ๋ง๋ ๊ฒฝ์ฐ ํ์ผ ํ์์ ์ฌ์ฉ๋ ๋ชจ๋ ์ฟผ๋ฆฌ์ ์์ ์ ์์ ํ์ผ ํ์์ ์ญ์ ํ ๋๊น์ง ์ธ์ ์ ์์ ํ์ผ ํ์์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค. DROP FILE FORMAT ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํ์ผ ํ์์ ์ญ์ ํ๋ฉด ์คํค๋ง์ ์ด๋ฏธ ์กด์ฌํ๋ ํ์ผ ํ์์ด ์๋ ์์ ํ์ผ ํ์์ด ์ญ์ ๋ฉ๋๋ค.
TYPE = CSV | JSON | AVRO | ORC | PARQUET | XML [ ... ]
์ ๋ ฅ ํ์ผ(๋ฐ์ดํฐ ๋ก๋ฉ์ฉ) ๋๋ ์ถ๋ ฅ ํ์ผ(๋ฐ์ดํฐ ์ธ๋ก๋ฉ์ฉ)์ ํ์์ ์ง์ ํฉ๋๋ค. ํ์ ์ ํ์ ๋ฐ๋ผ ์ถ๊ฐ์ ์ธ ํ์๋ณ ์ต์ ์ ์ง์ ํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ (์ด ํญ๋ชฉ์) ํ์ ์ ํ ์ต์ ์ ์ฐธ์กฐํ์ญ์์ค.
์ ํจํ ๊ฐ์ ํ์ผ ํ์์ด ๋ฐ์ดํฐ ๋ก๋ฉ์ฉ์ธ์ง ์ธ๋ก๋ฉ์ฉ์ธ์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
CSV
(๋ก๋ฉ ๋๋ ์ธ๋ก๋ฉ์ฉ)๋ค์๊ณผ ๊ฐ์ ํน์ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ๊ตฌ๋ถ๋ ํ๋ซ ์ผ๋ฐ ํ ์คํธ ํ์ผ์ ๋๋ค.
๋ ์ฝ๋ ๋ด ํ๋๋ฅผ ๊ตฌ๋ถํ๋ ๊ธฐํธ(์: ์ผํ).
๋ ์ฝ๋ ๊ตฌ๋ถ ๊ธฐํธ(์: ์ค ๋ฐ๊ฟ ๋ฌธ์).
์ด๋ฆ(CSV)์ ์ผํ๋ก ๊ตฌ๋ถ๋ ๊ฐ์ ์ ์ํ์ง๋ง ์ ํจํ ๋ชจ๋ ๋ฌธ์๋ฅผ ํ๋ ๊ตฌ๋ถ ๊ธฐํธ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
JSON
(๋ก๋ฉ ๋๋ ์ธ๋ก๋ฉ์ฉ)ํ๋ ์ด์์ JSON ๋ฌธ์(์: ์ค๋ธ์ ํธ ๋๋ ๋ฐฐ์ด)๊ฐ ํฌํจ๋ ๋ชจ๋ ์ผ๋ฐ ํ ์คํธ ํ์ผ์ ๋๋ค. JSON์ ๋ฐ์ ํ ํ์ผ ํ์์ ๋๋ค. ๋ฌธ์๋ ์ผํ๋ก ๊ตฌ๋ถํ ์ ์์ผ๋ฉฐ ์ ํ์ ์ผ๋ก ํฐ ๋ฐฐ์ด๋ก ๋ฌถ์ ์ ์์ต๋๋ค. ๋จ์ผ JSON ๋ฌธ์๋ ์ฌ๋ฌ ๋ผ์ธ์ ๊ฑธ์ณ ์์ ์ ์์ต๋๋ค.
์ฐธ๊ณ
ํ์ผ์์ ํ ์ด๋ธ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋, Snowflake๋ (์ค ๋ฐ๊ฟ์ผ๋ก ๊ตฌ๋ถ๋ JSON) ํ์ค ํ์ ๋๋ NDJSON ์ผํ๋ก ๊ตฌ๋ถ๋ JSON ํ์์ ์ง์ํฉ๋๋ค.
ํ ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ํ์ผ๋ก ์ธ๋ก๋ํ๋ฉด Snowflake๋ NDJSON ํ์์ผ๋ก๋ง ์ถ๋ ฅํฉ๋๋ค.
AVRO
(๋ก๋ ์ ์ฉ์ด๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ AVRO ํ์์ผ๋ก ์ธ๋ก๋ํ ์ ์์)AVRO ํ์์ ์ด์ง ํ์ผ์ ๋๋ค.
ORC
(๋ก๋ ์ ์ฉ์ด๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ORC ํ์์ผ๋ก ์ธ๋ก๋ํ ์ ์์)ORC ํ์์ ์ด์ง ํ์ผ์ ๋๋ค.
PARQUET
(๋ก๋ฉ ๋๋ ์ธ๋ก๋ฉ์ฉ)PARQUET ํ์์ ์ด์ง ํ์ผ์ ๋๋ค.
XML
(๋ก๋ ์ ์ฉ์ด๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ XML ํ์์ผ๋ก ์ธ๋ก๋ํ ์ ์์)XML ์์๊ฐ ์๋ ์ผ๋ฐ ํ ์คํธ ํ์ผ์ ๋๋ค.
CUSTOM
(๋น์ ํ ๋ฐ์ดํฐ๋ง ๋ก๋ํ๋ ๊ฒฝ์ฐ)์ด ํ์ ์ ํ์ ๊ธฐ๋ณธ ์คํ ์ด์ง๊ฐ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๊ณ
FILE_PROCESSOR
๋ณต์ฌ ์ต์ ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ ๋ฟ์์ ์ง์ ํฉ๋๋ค.
CSV์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ด ํญ๋ชฉ์ ์ฌ์ฉ๋ฒ ๋ ธํธ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. JSON๊ณผ ๊ธฐํ ๋ฐ์ ํ ํ์ผ ํ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฐ์ ํ ๋ฐ์ดํฐ ๋ก๋ฉ ์๊ฐ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
CUSTOM
ํ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ Document AI๋ก ๋น์ ํ ๋ฐ์ดํฐ ๋ก๋ํ๊ธฐ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.๊ธฐ๋ณธ๊ฐ:
CSV
COMMENT = 'string_literal'
ํ์ผ ํ์์ ๋ํ ์ค๋ช ์ ์ง์ ํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ: ๊ฐ ์์
ํ์ ์ ํ ์ต์
(formatTypeOptions
)ยถ
์ง์ ๋ ํ์ผ ํ์ ์ ํ(TYPE = ...
)์ ๋ฐ๋ผ ๋ค์ ํ์๋ณ ์ต์
(๊ณต๋ฐฑ, ์ผํ ๋๋ ์ค ๋ฐ๊ฟ์ผ๋ก ๊ตฌ๋ถ) ์ค ํ๋ ์ด์์ ํฌํจํ ์ ์์ต๋๋ค.
TYPE = CSVยถ
COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ, ๋ฐ์ดํฐ ์ธ๋ก๋ฉ, ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ๋ฐ์ดํฐ ํ์ผ์ ๋ํ ํ์ฌ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํฉ๋๋ค. Snowflake๋ ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ ์์ถ๋ ๋ฐ์ดํฐ ํ์ผ์ ์์ถํ ๋ฐฉ์์ ๊ฐ์งํด ๋ก๋ฉ์ ์ํด ํ์ผ์ ์์ถ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ง์ ๋ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํ์ผ์ ์์ถํฉ๋๋ค.
- ๊ฐ:
์ง์๋๋ ๊ฐ
์ฐธ๊ณ
AUTO
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ํ์ฌ ์๋์ผ๋ก ๊ฐ์งํ ์ ์๋ Brotli ์์ถ ํ์ผ์ ์ ์ธํ๊ณ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ด ์๋์ผ๋ก ๊ฐ์ง๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ํ์ผ์ ๊ธฐ๋ณธ๊ฐ์ธ gzip์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์์ถ๋ฉ๋๋ค.
GZIP
BZ2
BROTLI
Brotli ์์ถ ํ์ผ์ ๋ก๋ฉ/์ธ๋ก๋ฉํ ๋ ์ง์ ํด์ผ ํฉ๋๋ค.
ZSTD
Zstandard v0.8 ์ด์์ด ์ง์๋ฉ๋๋ค.
DEFLATE
Deflate ์์ถ ํ์ผ(zlib ํค๋ RFC1950 ํฌํจ).
RAW_DEFLATE
์์ Deflate ์์ถ ํ์ผ(ํค๋ RFC1951 ์ ์ธ).
NONE
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ํ์ผ์ด ์์ถ๋์ง ์์์์ ๋ํ๋ ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ธ๋ก๋ฉ๋ ํ์ผ์ด ์์ถ๋์ง ์๋๋ก ์ง์ ํฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
AUTO
RECORD_DELIMITER = 'string' | NONE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ, ๋ฐ์ดํฐ ์ธ๋ก๋ฉ, ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
์ ๋ ฅ ํ์ผ(๋ฐ์ดํฐ ๋ก๋ฉ) ๋๋ ์ธ๋ก๋ฉ๋ ํ์ผ(๋ฐ์ดํฐ ์ธ๋ก๋ฉ)์์ ๋ ์ฝ๋๋ฅผ ๊ตฌ๋ถํ๋ ํ๋ ์ด์์ ์ฑ๊ธ๋ฐ์ดํธ ๋๋ ๋ฉํฐ๋ฐ์ดํธ ๋ฌธ์์ ๋๋ค. ์ผ๋ฐ์ ์ธ ์ด์ค์ผ์ดํ ์ํ์ค ๋๋ ๋ค์ ์ฑ๊ธ๋ฐ์ดํธ ๋๋ ๋ฉํฐ๋ฐ์ดํธ ๋ฌธ์๋ฅผ ํ์ฉํฉ๋๋ค.
- ์ฑ๊ธ๋ฐ์ดํธ ๋ฌธ์:
8์ง์ ๊ฐ(
\\
์ ๋์ฌ๊ฐ ๋ถ์) ๋๋ 16์ง์ ๊ฐ(0x
๋๋\x
์ ๋์ฌ๊ฐ ๋ถ์). ์๋ฅผ ๋ค์ด, ๊ณก์ ์ ์ผํธ(^
) ๋ฌธ์๋ก ๊ตฌ๋ถ๋ ๋ ์ฝ๋์ ๊ฒฝ์ฐ 8์ง์(\\136
) ๋๋ 16์ง์(0x5e
) ๊ฐ์ ์ง์ ํฉ๋๋ค.- ๋ฉํฐ๋ฐ์ดํธ ๋ฌธ์:
16์ง์ ๊ฐ(
\x
์ ๋์ฌ๊ฐ ๋ถ์). ์๋ฅผ ๋ค์ด, ์ผํธ(ยข
) ๋ฌธ์๋ก ๊ตฌ๋ถ๋ ๋ ์ฝ๋์ ๊ฒฝ์ฐ 16์ง์(\xC2\xA2
) ๊ฐ์ ์ง์ ํฉ๋๋ค.RECORD_DELIMITER ๋๋ FIELD_DELIMITER ์ ๊ตฌ๋ถ ๊ธฐํธ๋ ๋ค๋ฅธ ํ์ผ ํ์ ์ต์ ์ ๊ตฌ๋ถ ๊ธฐํธ์ ํ์ ๋ฌธ์์ด์ด ๋ ์ ์์ต๋๋ค(์:
FIELD_DELIMITER = 'aa' RECORD_DELIMITER = 'aabb'
).
์ง์ ๋ ๊ตฌ๋ถ ๊ธฐํธ๋ ์์์ ๋ฐ์ดํธ ์ํ์ค๊ฐ ์๋๋ผ ์ ํจํ UTF-8 ๋ฌธ์์ฌ์ผ ํฉ๋๋ค. ๋ํ, ๊ตฌ๋ถ ๊ธฐํธ๋ ์ต๋ 20์๋ก ์ ํ๋ฉ๋๋ค.
NONE
์ ๊ฐ๋ ํ์ฉํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
- ๋ฐ์ดํฐ ๋ก๋ฉ:
์ค ๋ฐ๊ฟ ๋ฌธ์์ ๋๋ค. โ์ค ๋ฐ๊ฟโ์
\r\n
์ด Windows ํ๋ซํผ์์ ํ์ผ์ ๋ํ ์ค ๋ฐ๊ฟ์ผ๋ก ์ดํด๋๊ฒ๋ ํ๋ ๋ ผ๋ฆฌ์ ๋๋ค.- ๋ฐ์ดํฐ ์ธ๋ก๋ฉ:
์ค ๋ฐ๊ฟ ๋ฌธ์(
\n
).
FIELD_DELIMITER = 'string' | NONE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ, ๋ฐ์ดํฐ ์ธ๋ก๋ฉ, ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
์ ๋ ฅ ํ์ผ(๋ฐ์ดํฐ ๋ก๋ฉ) ๋๋ ์ธ๋ก๋ฉ๋ ํ์ผ(๋ฐ์ดํฐ ์ธ๋ก๋ฉ)์์ ํ๋๋ฅผ ๊ตฌ๋ถํ๋ ํ๋ ์ด์์ ์ฑ๊ธ๋ฐ์ดํธ ๋๋ ๋ฉํฐ๋ฐ์ดํธ ๋ฌธ์์ ๋๋ค. ์ผ๋ฐ์ ์ธ ์ด์ค์ผ์ดํ ์ํ์ค ๋๋ ๋ค์ ์ฑ๊ธ๋ฐ์ดํธ ๋๋ ๋ฉํฐ๋ฐ์ดํธ ๋ฌธ์๋ฅผ ํ์ฉํฉ๋๋ค.
- ์ฑ๊ธ๋ฐ์ดํธ ๋ฌธ์:
8์ง์ ๊ฐ(
\\
์ ๋์ฌ๊ฐ ๋ถ์) ๋๋ 16์ง์ ๊ฐ(0x
๋๋\x
์ ๋์ฌ๊ฐ ๋ถ์). ์๋ฅผ ๋ค์ด, ๊ณก์ ์ ์ผํธ(^
) ๋ฌธ์๋ก ๊ตฌ๋ถ๋ ๋ ์ฝ๋์ ๊ฒฝ์ฐ 8์ง์(\\136
) ๋๋ 16์ง์(0x5e
) ๊ฐ์ ์ง์ ํฉ๋๋ค.- ๋ฉํฐ๋ฐ์ดํธ ๋ฌธ์:
16์ง์ ๊ฐ(
\x
์ ๋์ฌ๊ฐ ๋ถ์). ์๋ฅผ ๋ค์ด, ์ผํธ(ยข
) ๋ฌธ์๋ก ๊ตฌ๋ถ๋ ๋ ์ฝ๋์ ๊ฒฝ์ฐ 16์ง์(\xC2\xA2
) ๊ฐ์ ์ง์ ํฉ๋๋ค.RECORD_DELIMITER ๋๋ FIELD_DELIMITER ์ ๊ตฌ๋ถ ๊ธฐํธ๋ ๋ค๋ฅธ ํ์ผ ํ์ ์ต์ ์ ๊ตฌ๋ถ ๊ธฐํธ์ ํ์ ๋ฌธ์์ด์ด ๋ ์ ์์ต๋๋ค(์:
FIELD_DELIMITER = 'aa' RECORD_DELIMITER = 'aabb'
).์ฐธ๊ณ
๋น ASCII ๋ฌธ์์ ๊ฒฝ์ฐ ๊ฒฐ์ ์ ๋์์ ์ป์ผ๋ ค๋ฉด 16์ง์ ๋ฐ์ดํธ ์ํ์ค ๊ฐ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ง์ ๋ ๊ตฌ๋ถ ๊ธฐํธ๋ ์์์ ๋ฐ์ดํธ ์ํ์ค๊ฐ ์๋๋ผ ์ ํจํ UTF-8 ๋ฌธ์์ฌ์ผ ํฉ๋๋ค. ๋ํ, ๊ตฌ๋ถ ๊ธฐํธ๋ ์ต๋ 20์๋ก ์ ํ๋ฉ๋๋ค.
NONE
์ ๊ฐ๋ ํ์ฉํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
์ผํ(
,
)
MULTI_LINE = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
์ฌ๋ฌ ์ค ํ์ฉ ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค. MULTI_LINE ์ด
FALSE
๋ก ์ค์ ๋์ด ์๊ณ ์ง์ ๋ ๋ ์ฝ๋ ๊ตฌ๋ถ ๊ธฐํธ๊ฐ CSV ํ๋ ๋ด์ ์๋ ๊ฒฝ์ฐ ํด๋น ํ๋๋ฅผ ํฌํจํ๋ ๋ ์ฝ๋๋ ์ค๋ฅ๋ก ํด์๋ฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
TRUE
์ฐธ๊ณ
RFC4180 ์ฌ์์ ๋ฐ๋ฅด๋ฉฐ 128MB ๋ณด๋ค ํฐ ์์ถ๋์ง ์์ ๋์ฉ๋ CSV ํ์ผ์ ๋ก๋ํ๋ ๊ฒฝ์ฐ, MULTI_LINE ์ด
FALSE
๋ก ์ค์ ๋๊ณ COMPRESSION ์ดNONE `
and ON_ERROR is set to `` ABORT_STATEMENT `` or `` CONTINUE`` ๋ก ์ค์ ๋๋ฉด Snowflake๋ ์ด๋ฌํ CSV ํ์ผ์ ๋ณ๋ ฌ ์ค์บ๋์ ์ง์ํฉ๋๋ค.FILE_EXTENSION = 'string' | NONE
- ์ฉ๋:
๋ฐ์ดํฐ ์ธ๋ก๋ฉ ์ ์ฉ
- ์ ์:
์คํ ์ด์ง๋ก ์ธ๋ก๋ฉ๋ ํ์ผ์ ํ์ฅ๋ช ์ ์ง์ ํฉ๋๋ค. ๋ชจ๋ ํ์ฅ๋ช ์ ํ์ฉํฉ๋๋ค. ์ํ๋ ์ํํธ์จ์ด๋ ์๋น์ค์์ ์ฝ์ ์ ์๋ ํ์ผ ํ์ฅ๋ช ์ ์ฌ์ฉ์๊ฐ ์ง์ ํด์ผ ํฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
null, ์ฆ ํ์ผ ํ์ฅ๋ช ์ด ํ์ ์ ํ
.csv[compression]
์ผ๋ก ๊ฒฐ์ ๋๋ค๋ ์๋ฏธ๋ก, ์ฌ๊ธฐ์compression
์COMPRESSION
์ด ์ค์ ๋ ๊ฒฝ์ฐ ์์ถ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ถ๊ฐ๋๋ ํ์ฅ๋ช ์ ๋๋ค.
์ฐธ๊ณ
SINGLE
๋ณต์ฌ ์ต์ ์ดTRUE
์ธ ๊ฒฝ์ฐ COPY ๋ช ๋ น์ ์คํํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ผ ํ์ฅ๋ช ์ด ์๋ ํ์ผ์ด ์ธ๋ก๋ฉ๋ฉ๋๋ค. ํ์ผ ํ์ฅ์๋ฅผ ์ง์ ํ๋ ค๋ฉดinternal_location
๋๋external_location
๊ฒฝ๋ก์ ํ์ผ ์ด๋ฆ๊ณผ ํ์ฅ์๋ฅผ ์ ๋ ฅํฉ๋๋ค(์:copy into @stage/data.csv
).PARSE_HEADER = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
์ด ์ด๋ฆ์ ๊ฒฐ์ ํ๊ธฐ ์ํด ๋ฐ์ดํฐ ํ์ผ์ ์ฒซ ๋ฒ์งธ ํ ๋จธ๋ฆฌ๊ธ์ ์ฌ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
์ด ํ์ผ ํ์ ์ต์ ์ ๋ค์ ์์ ์๋ง ์ ์ฉ๋ฉ๋๋ค.
INFER_SCHEMA ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์ ์๋ฅผ ์๋์ผ๋ก ๊ฐ์ง.
INFER_SCHEMA ํจ์ ๋ฐ MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ CSV ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ณ ์ด์ ๋ก๋.
์ด ์ต์ ์ TRUE๋ก ์ค์ ํ๋ฉด ์ฒซ ๋ฒ์งธ ํ ๋จธ๋ฆฌ๊ธ์ ์ฌ์ฉํด ์ด ์ด๋ฆ์ ๊ฒฐ์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ FALSE๋ก ๊ทธ๋๋ก ๋๋ฉด ์ด ์ด๋ฆ์ด c ๋ก ๋ฐํ๋๋ฉฐ ์ฌ๊ธฐ์ ๋ ์ด์ ์์น์ ๋๋ค.
์ฐธ๊ณ
์ด ์ต์ ์ ์ธ๋ถ ํ ์ด๋ธ์์ ์ง์๋์ง ์์ต๋๋ค.
SKIP_HEADER ๋ฅผ ์ค์ ํ ๊ฒฝ์ฐ
PARSE_HEADER = TRUE
์ต์ ์ ์ง์๋์ง ์์ต๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
FALSE
SKIP_HEADER = integer
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
ํ์ผ ์์์์ ๊ฑด๋๋ธ ์ค์ ๊ฐ์์ ๋๋ค.
์ฐธ๊ณ ๋ก, SKIP_HEADER๋ ํค๋ ์ค์ด ๋ฌด์์ธ์ง ๊ฒฐ์ ํ๊ธฐ ์ํด RECORD_DELIMITER ๋๋ FIELD_DELIMITER ๊ฐ์ ์ฌ์ฉํ์ง๋ ์์ผ๋ฉฐ, ์คํ๋ ค ํ์ผ์์ ์ง์ ๋ ์๋งํผ CRLF(์บ๋ฆฌ์ง ๋ฆฌํด, ์ค ๋ฐ๊ฟ)๋ก ๊ตฌ๋ถ๋ ์ค์ ๊ฑด๋๋๋๋ค. ๊ทธ๋ฐ ๋ค์ RECORD_DELIMITER์ FIELD_DELIMITER๋ฅผ ์ฌ์ฉํด ๋ก๋ฉํ ๋ฐ์ดํฐ ํ์ ๊ฒฐ์ ํฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
0
SKIP_BLANK_LINES = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
๋ฐ์ดํฐ ํ์ผ์์ ๋ฐ๊ฒฌ๋๋ ๋น ์ค์ ๊ฑด๋๋ฐ๋๋ก ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋น ์ค๋ก ์ธํด ๋ ์ฝ๋ ๋ ์ค๋ฅ๋ฅผ ๋ฐ์ํฉ๋๋ค(๊ธฐ๋ณธ ๋์).
- ๊ธฐ๋ณธ๊ฐ:
FALSE
DATE_FORMAT = 'string' | AUTO
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ก๋ฉ
- ์ ์:
๋ฐ์ดํฐ ํ์ผ(๋ฐ์ดํฐ ๋ก๋ฉ) ๋๋ ํ ์ด๋ธ(๋ฐ์ดํฐ ์ธ๋ก๋ฉ)์ ๋ ์ง ๊ฐ ํ์์ ์ ์ํฉ๋๋ค. ๊ฐ์ด ์ง์ ๋์ง ์๊ฑฐ๋
AUTO
์ธ ๊ฒฝ์ฐ DATE_INPUT_FORMAT (๋ฐ์ดํฐ ๋ก๋ฉ) ๋๋ DATE_OUTPUT_FORMAT (๋ฐ์ดํฐ ์ธ๋ก๋ฉ) ๋งค๊ฐ ๋ณ์์ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
AUTO
TIME_FORMAT = 'string' | AUTO
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ก๋ฉ
- ์ ์:
๋ฐ์ดํฐ ํ์ผ(๋ฐ์ดํฐ ๋ก๋ฉ) ๋๋ ํ ์ด๋ธ(๋ฐ์ดํฐ ์ธ๋ก๋ฉ)์ ์๊ฐ ๊ฐ ํ์์ ์ ์ํฉ๋๋ค. ๊ฐ์ด ์ง์ ๋์ง ์๊ฑฐ๋
AUTO
์ธ ๊ฒฝ์ฐ TIME_INPUT_FORMAT (๋ฐ์ดํฐ ๋ก๋ฉ) ๋๋ TIME_OUTPUT_FORMAT (๋ฐ์ดํฐ ์ธ๋ก๋ฉ) ๋งค๊ฐ ๋ณ์์ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
AUTO
TIMESTAMP_FORMAT = string' | AUTO
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ก๋ฉ
- ์ ์:
๋ฐ์ดํฐ ํ์ผ(๋ฐ์ดํฐ ๋ก๋ฉ) ๋๋ ํ ์ด๋ธ(๋ฐ์ดํฐ ์ธ๋ก๋ฉ)์ ํ์์คํฌํ ๊ฐ ํ์์ ์ ์ํฉ๋๋ค. ๊ฐ์ด ์ง์ ๋์ง ์๊ฑฐ๋
AUTO
์ธ ๊ฒฝ์ฐ TIMESTAMP_INPUT_FORMAT (๋ฐ์ดํฐ ๋ก๋ฉ) ๋๋ TIMESTAMP_OUTPUT_FORMAT (๋ฐ์ดํฐ ์ธ๋ก๋ฉ) ๋งค๊ฐ ๋ณ์์ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
AUTO
BINARY_FORMAT = HEX | BASE64 | UTF8
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ก๋ฉ
- ์ ์:
์ด์ง ์ ๋ ฅ ๋๋ ์ถ๋ ฅ์ ์ธ์ฝ๋ฉ ํ์์ ์ ์ํฉ๋๋ค. ์ด ์ต์ ์ ํ ์ด๋ธ์ ์ด์ง ์ด๋ก ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ๊ฑฐ๋ ์ด์ง ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
HEX
ESCAPE = 'character' | NONE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ก๋ฉ
- ์ ์:
๊ดํธ๋ก ๋ฌถ์ด๊ฑฐ๋ ๋ฌถ์ด์ง ์์ ํ๋ ๊ฐ์ ๋ํ ์ด์ค์ผ์ดํ ๋ฌธ์๋ก ์ฌ์ฉ๋๋ ์ฑ๊ธ๋ฐ์ดํธ ๋ฌธ์์ด์ ๋๋ค. ์ด์ค์ผ์ดํ ๋ฌธ์๋ ๋ฌธ์ ์ํ์ค์ ํ์ ๋ฌธ์์ ๋ํ ๋์ฒด ํด์์ ํธ์ถํฉ๋๋ค. ESCAPE ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์๋
FIELD_OPTIONALLY_ENCLOSED_BY
๋ฌธ์์ ์ธ์คํด์ค๋ฅผ ๋ฆฌํฐ๋ด๋ก ํด์ํ ์ ์์ต๋๋ค.์ผ๋ฐ์ ์ธ ์ด์ค์ผ์ดํ ์ํ์ค, 8์ง์ ๊ฐ ๋๋ 16์ง์ ๊ฐ์ ํ์ฉํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ก๋ฉํ๊ธฐ:
๊ดํธ๋ก ๋ฌถ์ธ ํ๋์๋ง ์ด์ค์ผ์ดํ ๋ฌธ์๋ฅผ ์ง์ ํฉ๋๋ค.
FIELD_OPTIONALLY_ENCLOSED_BY
๋ฅผ ์ค์ ํ์ฌ ํ๋๋ฅผ ๋ฌถ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฌธ์๋ฅผ ์ง์ ํฉ๋๋ค.์ฐธ๊ณ
์ด ํ์ผ ํ์ ์ต์ ์ ์ฑ๊ธ๋ฐ์ดํธ ๋ฌธ์๋ง ์ง์ํฉ๋๋ค. UTF-8 ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์์ ASCII ๋ฌธ์๋ฅผ ๋ฉํฐ๋ฐ์ดํธ ๋ฌธ์๋ก ๋ํ๋ ๋๋ค. ๋ฐ์ดํฐ ํ์ผ์ด UTF-8 ๋ฌธ์ ์ธํธ๋ก ์ธ์ฝ๋ฉ๋ ๊ฒฝ์ฐ ์์ ASCII ๋ฌธ์๋ฅผ ์ต์ ๊ฐ์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค.
๋ํ ์์ ASCII ๋ฌธ์๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ
ENCODING = 'string'
ํ์ผ ํ์ ์ต์ ์ ๋ฐ์ดํฐ ํ์ผ์ ๋ฌธ์ ์ธ์ฝ๋ฉ์ผ๋ก ์ค์ ํ์ฌ ๋ฌธ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ํด์๋๋๋ก ๋ณด์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค.- ๋ฐ์ดํฐ ์ธ๋ก๋ฉํ๊ธฐ:
์ด ์ต์ ์ด ์ค์ ๋๋ฉด
ESCAPE_UNENCLOSED_FIELD
์ ๋ํด ์ค์ ๋ ์ด์ค์ผ์ดํ ๋ฌธ์๋ฅผ ์ฌ์ ์ํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
NONE
ESCAPE_UNENCLOSED_FIELD = 'character' | NONE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ, ๋ฐ์ดํฐ ์ธ๋ก๋ฉ, ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
๊ดํธ๋ก ๋ฌถ์ด์ง ์์ ํ๋ ๊ฐ์ ๋ํด์๋ง ์ด์ค์ผ์ดํ ๋ฌธ์๋ก ์ฌ์ฉ๋๋ ์ฑ๊ธ๋ฐ์ดํธ ๋ฌธ์์ด์ ๋๋ค. ์ด์ค์ผ์ดํ ๋ฌธ์๋ ๋ฌธ์ ์ํ์ค์ ํ์ ๋ฌธ์์ ๋ํ ๋์ฒด ํด์์ ํธ์ถํฉ๋๋ค. ESCAPE ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์๋
FIELD_DELIMITER
๋๋RECORD_DELIMITER
๋ฌธ์์ ์ธ์คํด์ค๋ฅผ ๋ฆฌํฐ๋ด๋ก ํด์ํ ์ ์์ต๋๋ค. ์ด์ค์ผ์ดํ ๋ฌธ์๋ ๋ฐ์ดํฐ์์ ์์ ์ ์ธ์คํด์ค๋ฅผ ์ด์ค์ผ์ดํํ๋ ๋ฐ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.์ผ๋ฐ์ ์ธ ์ด์ค์ผ์ดํ ์ํ์ค, 8์ง์ ๊ฐ ๋๋ 16์ง์ ๊ฐ์ ํ์ฉํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ก๋ฉํ๊ธฐ:
๊ดํธ๋ก ๋ฌถ์ด์ง ์์ ํ๋์๋ง ์ด์ค์ผ์ดํ ๋ฌธ์๋ฅผ ์ง์ ํฉ๋๋ค.
์ฐธ๊ณ
๊ธฐ๋ณธ๊ฐ์
\\
์ ๋๋ค. ๋ฐ์ดํฐ ํ์ผ์ ํ์ด ๋ฐฑ์ฌ๋์(\
) ๋ฌธ์๋ก ๋๋ ๊ฒฝ์ฐ ์ด ๋ฌธ์๋RECORD_DELIMITER
ํ์ผ ํ์ ์ต์ ์ ๋ํด ์ง์ ๋ ์ค ๋ฐ๊ฟ ๋๋ ์บ๋ฆฌ์ง ๋ฆฌํด ๋ฌธ์๋ฅผ ์ด์ค์ผ์ดํํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ๋ก๋ฉ ์์ ์์ ์ด ํ๊ณผ ๋ค์ ํ์ ๋จ์ผ ๋ฐ์ดํฐ ํ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ๊ฐ์NONE
์ผ๋ก ์ค์ ํ์ญ์์ค.์ด ํ์ผ ํ์ ์ต์ ์ ์ฑ๊ธ๋ฐ์ดํธ ๋ฌธ์๋ง ์ง์ํฉ๋๋ค. UTF-8 ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์์ ASCII ๋ฌธ์๋ฅผ ๋ฉํฐ๋ฐ์ดํธ ๋ฌธ์๋ก ๋ํ๋ ๋๋ค. ๋ฐ์ดํฐ ํ์ผ์ด UTF-8 ๋ฌธ์ ์ธํธ๋ก ์ธ์ฝ๋ฉ๋ ๊ฒฝ์ฐ ์์ ASCII ๋ฌธ์๋ฅผ ์ต์ ๊ฐ์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค.
๋ํ ์์ ASCII ๋ฌธ์๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ
ENCODING = 'string'
ํ์ผ ํ์ ์ต์ ์ ๋ฐ์ดํฐ ํ์ผ์ ๋ฌธ์ ์ธ์ฝ๋ฉ์ผ๋ก ์ค์ ํ์ฌ ๋ฌธ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ํด์๋๋๋ก ๋ณด์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๋ฐ์ดํฐ ์ธ๋ก๋ฉํ๊ธฐ:
ESCAPE
๊ฐ ์ค์ ๋ ๊ฒฝ์ฐ ํด๋น ํ์ผ ํ์ ์ต์ ์ ๋ํด ์ค์ ๋ ์ด์ค์ผ์ดํ ๋ฌธ์๊ฐ ์ด ์ต์ ์ ์ฌ์ ์ํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
๋ฐฑ์ฌ๋์(
\\
)
TRIM_SPACE = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
ํ๋์์ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํํธ์จ์ด์์ ํ๋๋ฅผ ๋ฐ์ดํ๋ก ๋ฌถ์ง๋ง ์ ํ ๊ณต๋ฐฑ์ ์ฝ์ ํ๋ ๊ฒฝ์ฐ Snowflake๋ ์ฌ๋ ๋ฐ์ดํ ๋ฌธ์๊ฐ ์๋ ์ ํ ๊ณต๋ฐฑ์ ํ๋์ ์์์ผ๋ก ์ฝ์ต๋๋ค(์ฆ, ๋ฐ์ดํ๋ ํ๋ ๋ฐ์ดํฐ ๋ฌธ์์ด์ ์ผ๋ถ๋ก ํด์๋จ). ๋ฐ์ดํฐ ๋ก๋ฉ ์ค์ ๋ถํ์ํ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๋ ค๋ฉด ์ด ์ต์ ์
TRUE
๋ก ์ค์ ํ์ญ์์ค.๋ ๋ค๋ฅธ ์๋ก, ์ ํ ๋๋ ํํ ๊ณต๋ฐฑ์ด ๋ฌธ์์ด์ ๋ฌถ๋ ๋ฐ์ดํ ์ฃผ์์ ์๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์ฃผ์์ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๊ณ
FIELD_OPTIONALLY_ENCLOSED_BY
์ต์ ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํ๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ๋ฐ์ดํ ์์ ๋ชจ๋ ๊ณต๋ฐฑ์ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค. ์๋ฅผ ๋ค์ดFIELD_DELIMITER = '|'
๋ฐFIELD_OPTIONALLY_ENCLOSED_BY = '"'
๋ฅผ ๊ฐ์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.|"Hello world"| /* loads as */ >Hello world< |" Hello world "| /* loads as */ > Hello world < | "Hello world" | /* loads as */ >Hello world<
(์ด ์์์ ๋๊ดํธ๋ ๋ก๋ฉ๋์ง ์์ต๋๋ค. ๋๊ดํธ๋ ๋ก๋ฉ๋ ๋ฌธ์์ด์ ์์๊ณผ ๋์ ๊ฒฝ๊ณ๋ฅผ ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.)
- ๊ธฐ๋ณธ๊ฐ:
FALSE
FIELD_OPTIONALLY_ENCLOSED_BY = 'character' | NONE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ, ๋ฐ์ดํฐ ์ธ๋ก๋ฉ, ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
๋ฌธ์์ด์ ๋ฌถ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฌธ์์ ๋๋ค. ๊ฐ์
NONE
, ์์๋ฐ์ดํ ๋ฌธ์('
) ๋๋ ํฐ๋ฐ์ดํ ๋ฌธ์("
)์ผ ์ ์์ต๋๋ค. ์์๋ฐ์ดํ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด 8์ง์ ๋๋ 16์ง์ ํํ(0x27
) ๋๋ ์ด์ค ์์๋ฐ์ดํ๋ก ๋ฌถ์ธ ์ด์ค์ผ์ดํ(''
)๋ฅผ ์ฌ์ฉํ์ญ์์ค.- ๋ฐ์ดํฐ ์ธ๋ก๋ฉ ์ ์ฉ:
์๋ณธ ํ ์ด๋ธ์ ํ๋์ ์ด ๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด Snowflake๋ ์ธ๋ก๋ฉ์ ์ํด ๋์ผํ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ๋ฌธ์๋ฅผ ์ด์ค์ผ์ดํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ์ด ํฐ๋ฐ์ดํ ๋ฌธ์์ด๊ณ ํ๋์ ๋ฌธ์์ด
A "B" C
๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ Snowflake๋ ๋ค์๊ณผ ๊ฐ์ด ์ธ๋ก๋ฉ์ ์ํด ํฐ๋ฐ์ดํ๋ฅผ ์ด์ค์ผ์ดํํฉ๋๋ค.A ""B"" C
- ๊ธฐ๋ณธ๊ฐ:
NONE
NULL_IF = ( 'string1' [ , 'string2' , ... ] )
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ, ๋ฐ์ดํฐ ์ธ๋ก๋ฉ, ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
SQL NULL๋ก ๋ณํํ๊ฑฐ๋ ๊ทธ ๋ฐ๋๋ก ๋ณํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฌธ์์ด:
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ Snowflake๋ ๋ฐ์ดํฐ ๋ก๋ฉ ์์ค์์ ์ด๋ฌํ ๊ฐ์ SQL NULL๋ก ๋ฐ๊ฟ๋๋ค. ๋ ์ด์์ ๋ฌธ์์ด์ ์ง์ ํ๋ ค๋ฉด ๋ฌธ์์ด ๋ชฉ๋ก์ ๊ดํธ๋ก ๋ฌถ๊ณ ์ผํ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ์ ๊ฐ์ ๊ตฌ๋ถํฉ๋๋ค.
Snowflake๋ ๋ฐ์ดํฐ ํ์ ๊ณผ ๊ด๊ณ์์ด ๊ฐ์ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ NULL๋ก ๋ณํํฉ๋๋ค. ์๋ฅผ ๋ค์ด
2
๊ฐ ๊ฐ์ผ๋ก ์ง์ ๋๋ฉด2
์ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๋ฌธ์์ด ๋๋ ์ซ์๋ก ๋ณํ๋ฉ๋๋ค.์:
NULL_IF = ('\N', 'NULL', 'NUL', '')
์ด ์ต์ ์๋ ๋น ๋ฌธ์์ด์ด ํฌํจ๋ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋, Snowflake๋ SQL NULL ๊ฐ์ ๋ชฉ๋ก์ ์ฒซ ๋ฒ์งธ ๊ฐ์ผ๋ก ๋ณํํฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
\N
(์ฆ, NULL,ESCAPE_UNENCLOSED_FIELD
๊ฐ์\
)๋ก ๊ฐ์ ํฉ๋๋ค
ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
์ ๋ ฅ ํ์ผ์ ๊ตฌ๋ถ๋ ์ด(์ฆ, ํ๋) ์๊ฐ ํด๋น ํ ์ด๋ธ์ ์ด ์์ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ ๋ถ์ ์ค๋ฅ๋ฅผ ์์ฑํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
FALSE
๋ก ์ค์ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๊ณ ๋ก๋ฉ์ด ๊ณ์๋ฉ๋๋ค. ํ์ผ์ด ์ฑ๊ณต์ ์ผ๋ก ๋ก๋ฉ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.์ ๋ ฅ ํ์ผ์ ํ ์ด๋ธ์ ์ด๋ณด๋ค ๋ง์ ์์ ํ๋๊ฐ ์๋ ๋ ์ฝ๋๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ์ผ์นํ๋ ํ๋๋ ํ์ผ์์ ๋์ค๋ ์์๋๋ก ๋ก๋ฉ๋๊ณ ๋๋จธ์ง ํ๋๋ ๋ก๋ฉ๋์ง ์์ต๋๋ค.
์ ๋ ฅ ํ์ผ์ ํ ์ด๋ธ์ ์ด๋ณด๋ค ์ ์ ์์ ํ๋๊ฐ ์๋ ๋ ์ฝ๋๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ํ ์ด๋ธ์์ ์ผ์นํ์ง ์๋ ์ด์ด NULL ๊ฐ๊ณผ ํจ๊ป ๋ก๋ฉ๋ฉ๋๋ค.
์ด ์ต์ ์์๋ ์ ๋ ฅ ํ์ผ ๋ด์ ๋ชจ๋ ๋ ์ฝ๋๊ฐ ๊ฐ์ ๊ธธ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค(์ฆ, ์ด ๋งค๊ฐ ๋ณ์์ ๋ํด ์ง์ ๋ ๊ฐ๊ณผ ๊ด๊ณ์์ด ๋ค์ํ ๊ธธ์ด์ ๋ ์ฝ๋๋ฅผ ํฌํจํ ํ์ผ์ด ์ค๋ฅ๋ฅผ ๋ฐํํจ).
- ๊ธฐ๋ณธ๊ฐ:
TRUE
์ฐธ๊ณ
๋ก๋ฉํ๋ ๋์ ๋ฐ์ดํฐ ๋ณํ ์(์ฆ, ์ฟผ๋ฆฌ๋ฅผ COPY ๋ช ๋ น์ ์์ค๋ก ์ฌ์ฉ), ์ด ์ต์ ์ ๋ฌด์๋ฉ๋๋ค. ๋ฐ์ดํฐ ํ์ผ์ ์ด ๊ฐ์ ๋ฐ ์์๋ ๋์ ํ ์ด๋ธ๊ณผ ๊ฐ์ง ์์๋ ๋ฉ๋๋ค.
REPLACE_INVALID_CHARACTERS = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
์ ํจํ์ง ์์ UTF-8 ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ๋์ฒด ๋ฌธ์(
๏ฟฝ
)๋ก ๋์ฒดํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ.
TRUE
๋ก ์ค์ ํ๋ฉด Snowflake๊ฐ ์๋ชป๋ UTF-8 ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ๋์ฒด ๋ฌธ์๋ก ๋ฐ๊ฟ๋๋ค.FALSE
๋ก ์ค์ ํ๋ฉด ์๋ชป๋ UTF-8 ๋ฌธ์ ์ธ์ฝ๋ฉ์ด ๊ฐ์ง๋ ๋ ๋ก๋ฉ ์์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
FALSE
EMPTY_FIELD_AS_NULL = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ, ๋ฐ์ดํฐ ์ธ๋ก๋ฉ, ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
๋ฐ์ดํฐ ๋ก๋ฉ ์ค ๋ ๊ฐ์ ์ฐ์๋ ๊ตฌ๋ถ ๊ธฐํธ(์:
,,
)๋ก ํ์๋๋ ์ ๋ ฅ ํ์ผ์ ๋น ํ๋์ SQL NULL ์ ์ฝ์ ํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค.FALSE
๋ก ์ค์ ํ๋ฉด Snowflake๊ฐ ๋น ํ๋๋ฅผ ํด๋น ์ด ํ์ ์ผ๋ก ์บ์คํ ํ๋ ค๊ณ ์๋ํฉ๋๋ค. STRING ์ ํ์ ์ด์ ๋น ๋ฌธ์์ด์ด ์ฝ์ ๋ฉ๋๋ค. ๋ค๋ฅธ ์ด ํ์ ์ ๊ฒฝ์ฐ COPY ๋ช ๋ น์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ด ์ต์ ์
FIELD_OPTIONALLY_ENCLOSED_BY
์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.FIELD_OPTIONALLY_ENCLOSED_BY = NONE
์ผ ๋,EMPTY_FIELD_AS_NULL = FALSE
๋ฅผ ์ค์ ํ๋ฉด ํ๋ ๊ฐ์ ๋ฌถ๋ ๋ฐ์ดํ ์์ด ๋น ๋ฌธ์์ด ๊ฐ์ผ๋ก ํ ์ด๋ธ์ ๋น ๋ฌธ์์ด์ ์ธ๋ก๋ฉํ๋๋ก ์ง์ ๋ฉ๋๋ค.TRUE
๋ก ์ค์ ํ๋ฉดFIELD_OPTIONALLY_ENCLOSED_BY
๊ฐ ๋ฌธ์์ด์ ๋ฌถ์ ๋ฌธ์๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
TRUE
SKIP_BYTE_ORDER_MARK = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
๋ฐ์ดํฐ ํ์ผ์ ์๋ ๊ฒฝ์ฐ BOM(๋ฐ์ดํธ ์์ ํ์)๋ฅผ ๊ฑด๋๋ธ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค. BOM์ ๋ฐ์ดํฐ ํ์ผ์ ์์ ๋ถ๋ถ์์ ๋ฐ์ดํธ ์์์ ์ธ์ฝ๋ฉ ํ์์ ์ ์ํ๋ ๋ฌธ์ ์ฝ๋์ ๋๋ค.
FALSE
๋ก ์ค์ ํ๋ฉด Snowflake๊ฐ ๋ฐ์ดํฐ ํ์ผ์ ์๋ ๋ชจ๋ BOM์ ์ธ์ํ๋ฏ๋ก, BOM์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ํ ์ด๋ธ์ ์ฒซ ๋ฒ์งธ ์ด์ ๋ณํฉ๋๋ ๊ฒฐ๊ณผ๊ฐ ๋ ์ ์์ต๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
TRUE
ENCODING = 'string'
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ๋ก ๋ก๋ฉํ ๋ ์๋ณธ ๋ฐ์ดํฐ์ ๋ฌธ์ ์ธํธ๋ฅผ ์ง์ ํ๋ ๋ฌธ์์ด(์์)์ ๋๋ค.
๋ฌธ์ ์ธํธ
ENCODING
๊ฐ์ง์๋๋ ์ธ์ด
์ฐธ๊ณ
Big5
BIG5
์ค๊ตญ์ด ๋ฒ์ฒด
EUC-JP
EUCJP
์ผ๋ณธ์ด
EUC-KR
EUCKR
ํ๊ตญ์ด
GB18030
GB18030
์ค๊ตญ์ด
IBM420
IBM420
์๋์ด
IBM424
IBM424
ํ๋ธ๋ฆฌ์ด
IBM949
IBM949
ํ๊ตญ์ด
ISO-2022-CN
ISO2022CN
์ค๊ตญ์ด ๊ฐ์ฒด
ISO-2022-JP
ISO2022JP
์ผ๋ณธ์ด
ISO-2022-KR
ISO2022KR
ํ๊ตญ์ด
ISO-8859-1
ISO88591
๋ด๋งํฌ์ด, ๋ค๋๋๋์ด, ์์ด, ํ๋์ค์ด, ๋ ์ผ์ด, ์ดํ๋ฆฌ์์ด, ๋ ธ๋ฅด์จ์ด์ด, ํฌ๋ฅดํฌ๊ฐ์ด, ์ค์จ๋ด์ด
ISO-8859-2
ISO88592
์ฒด์ฝ์ด, ํ๊ฐ๋ฆฌ์ด, ํด๋๋์ด, ๋ฃจ๋ง๋์์ด
ISO-8859-5
ISO88595
๋ฌ์์์ด
ISO-8859-6
ISO88596
์๋์ด
ISO-8859-7
ISO88597
๊ทธ๋ฆฌ์ค์ด
ISO-8859-8
ISO88598
ํ๋ธ๋ฆฌ์ด
ISO-8859-9
ISO88599
ํฐํค์ด
ISO-8859-15
ISO885915
๋ด๋งํฌ์ด, ๋ค๋๋๋์ด, ์์ด, ํ๋์ค์ด, ๋ ์ผ์ด, ์ดํ๋ฆฌ์์ด, ๋ ธ๋ฅด์จ์ด์ด, ํฌ๋ฅดํฌ๊ฐ์ด, ์ค์จ๋ด์ด
์ ๋กํ ๊ธฐํธ๋ฅผ ํฌํจํ์ฌ, 8์๋ฅผ ์ ์ธํ๋ฉด ISO-8859-1๊ณผ ๋์ผํฉ๋๋ค.
KOI8-R
KOI8R
๋ฌ์์์ด
Shift_JIS
SHIFTJIS
์ผ๋ณธ์ด
UTF-8
UTF8
๋ชจ๋ ์ธ์ด
๊ตฌ๋ถ๋ ํ์ผ(CSV, TSV ๋ฑ)์์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ๋ ๊ฒฝ์ฐ UTF-8์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. . . ์ง์๋๋ ๋ค๋ฅธ ๋ชจ๋ ํ์ผ ํ์(JSON, Avro ๋ฑ)์์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ฟ ์๋๋ผ ์ธ๋ก๋ฉํ๋ ๊ฒฝ์ฐ UTF-8์ด ์ ์ผํ๊ฒ ์ง์๋๋ ๋ฌธ์ ์ธํธ์ ๋๋ค.
UTF-16
UTF16
๋ชจ๋ ์ธ์ด
UTF-16BE
UTF16BE
๋ชจ๋ ์ธ์ด
UTF-16LE
UTF16LE
๋ชจ๋ ์ธ์ด
UTF-32
UTF32
๋ชจ๋ ์ธ์ด
UTF-32BE
UTF32BE
๋ชจ๋ ์ธ์ด
UTF-32LE
UTF32LE
๋ชจ๋ ์ธ์ด
windows-874
WINDOWS874
ํ๊ตญ์ด
windows-949
WINDOWS949
ํ๊ตญ์ด
windows-1250
WINDOWS1250
์ฒด์ฝ์ด, ํ๊ฐ๋ฆฌ์ด, ํด๋๋์ด, ๋ฃจ๋ง๋์์ด
windows-1251
WINDOWS1251
๋ฌ์์์ด
windows-1252
WINDOWS1252
๋ด๋งํฌ์ด, ๋ค๋๋๋์ด, ์์ด, ํ๋์ค์ด, ๋ ์ผ์ด, ์ดํ๋ฆฌ์์ด, ๋ ธ๋ฅด์จ์ด์ด, ํฌ๋ฅดํฌ๊ฐ์ด, ์ค์จ๋ด์ด
windows-1253
WINDOWS1253
๊ทธ๋ฆฌ์ค์ด
windows-1254
WINDOWS1254
ํฐํค์ด
windows-1255
WINDOWS1255
ํ๋ธ๋ฆฌ์ด
windows-1256
WINDOWS1256
์๋์ด
- ๊ธฐ๋ณธ๊ฐ:
UTF8
์ฐธ๊ณ
Snowflake๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ UTF-8 ๋ฌธ์ ์ธํธ์ ๋ด๋ถ์ ์ผ๋ก ์ ์ฅํฉ๋๋ค. ๋ฐ์ดํฐ๋ UTF-8๋ก ๋ณํ๋ ํ Snowflake์ ๋ก๋ฉ๋ฉ๋๋ค.
TYPE = JSONยถ
COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ๋ฐ์ดํฐ ํ์ผ์ ๋ํ ํ์ฌ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํฉ๋๋ค. Snowflake๋ ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ ์์ถ๋ ๋ฐ์ดํฐ ํ์ผ์ ์์ถํ ๋ฐฉ์์ ๊ฐ์งํด ๋ก๋ฉ์ ์ํด ํ์ผ์ ์์ถ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ง์ ๋ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํ์ผ์ ์์ถํฉ๋๋ค.
- ๊ฐ:
์ง์๋๋ ๊ฐ
์ฐธ๊ณ
AUTO
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ํ์ฌ ์๋์ผ๋ก ๊ฐ์งํ ์ ์๋ Brotli ์์ถ ํ์ผ์ ์ ์ธํ๊ณ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ด ์๋์ผ๋ก ๊ฐ์ง๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ํ์ผ์ ๊ธฐ๋ณธ๊ฐ์ธ gzip์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์์ถ๋ฉ๋๋ค.
GZIP
BZ2
BROTLI
Brotli ์์ถ ํ์ผ์ ๋ก๋ฉ/์ธ๋ก๋ฉํ ๊ฒฝ์ฐ ์ง์ ํด์ผ ํฉ๋๋ค.
ZSTD
Zstandard v0.8 ์ด์์ด ์ง์๋ฉ๋๋ค.
DEFLATE
Deflate ์์ถ ํ์ผ(zlib ํค๋ RFC1950 ํฌํจ).
RAW_DEFLATE
์์ Deflate ์์ถ ํ์ผ(ํค๋ RFC1951 ์ ์ธ).
NONE
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ํ์ผ์ด ์์ถ๋์ง ์์์์ ๋ํ๋ ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ธ๋ก๋ฉ๋ ํ์ผ์ด ์์ถ๋์ง ์๋๋ก ์ง์ ํฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
AUTO
DATE_FORMAT = 'string' | AUTO
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
๋ฐ์ดํฐ ํ์ผ์์ ๋ ์ง ๋ฌธ์์ด ๊ฐ ํ์์ ์ ์ํฉ๋๋ค. ๊ฐ์ด ์ง์ ๋์ง ์๊ฑฐ๋
AUTO
์ธ ๊ฒฝ์ฐ DATE_INPUT_FORMAT ๋งค๊ฐ ๋ณ์์ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.์ด ํ์ผ ํ์ ์ต์ ์ ๋ค์ ์์ ์๋ง ์ ์ฉ๋ฉ๋๋ค.
MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ JSON ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ด์ ๋ก๋ฉํ๋ ์์ .
COPY ๋ฌธ์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ํ์ฌ ๋ณ๊ฐ์ ์ด์ JSON ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ๋ ์์ (์ฆ, COPY ๋ณํ).
- ๊ธฐ๋ณธ๊ฐ:
AUTO
TIME_FORMAT = 'string' | AUTO
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
๋ฐ์ดํฐ ํ์ผ์์ ์๊ฐ ๋ฌธ์์ด ๊ฐ ํ์์ ์ ์ํฉ๋๋ค. ๊ฐ์ด ์ง์ ๋์ง ์๊ฑฐ๋
AUTO
์ธ ๊ฒฝ์ฐ TIME_INPUT_FORMAT ๋งค๊ฐ ๋ณ์์ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.์ด ํ์ผ ํ์ ์ต์ ์ ๋ค์ ์์ ์๋ง ์ ์ฉ๋ฉ๋๋ค.
MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ JSON ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ด์ ๋ก๋ฉํ๋ ์์ .
COPY ๋ฌธ์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ํ์ฌ ๋ณ๊ฐ์ ์ด์ JSON ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ๋ ์์ (์ฆ, COPY ๋ณํ).
- ๊ธฐ๋ณธ๊ฐ:
AUTO
TIMESTAMP_FORMAT = string' | AUTO
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
๋ฐ์ดํฐ ํ์ผ์์ ํ์์คํฌํ ๋ฌธ์์ด ๊ฐ ํ์์ ์ ์ํฉ๋๋ค. ๊ฐ์ด ์ง์ ๋์ง ์๊ฑฐ๋
AUTO
์ธ ๊ฒฝ์ฐ TIMESTAMP_INPUT_FORMAT ๋งค๊ฐ ๋ณ์์ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.์ด ํ์ผ ํ์ ์ต์ ์ ๋ค์ ์์ ์๋ง ์ ์ฉ๋ฉ๋๋ค.
MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ JSON ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ด์ ๋ก๋ฉํ๋ ์์ .
COPY ๋ฌธ์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ํ์ฌ ๋ณ๊ฐ์ ์ด์ JSON ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ๋ ์์ (์ฆ, COPY ๋ณํ).
- ๊ธฐ๋ณธ๊ฐ:
AUTO
BINARY_FORMAT = HEX | BASE64 | UTF8
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
๋ฐ์ดํฐ ํ์ผ์ ์ด์ง ๋ฌธ์์ด ๊ฐ์ ๋ํ ์ธ์ฝ๋ฉ ํ์์ ์ ์ํฉ๋๋ค. ์ด ์ต์ ์ ํ ์ด๋ธ์ ์ด์ง ์ด๋ก ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ํ์ผ ํ์ ์ต์ ์ ๋ค์ ์์ ์๋ง ์ ์ฉ๋ฉ๋๋ค.
MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ JSON ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ด์ ๋ก๋ฉํ๋ ์์ .
COPY ๋ฌธ์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ํ์ฌ ๋ณ๊ฐ์ ์ด์ JSON ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ๋ ์์ (์ฆ, COPY ๋ณํ).
- ๊ธฐ๋ณธ๊ฐ:
HEX
TRIM_SPACE = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
๋ฌธ์์ด์์ ์ ํ ๊ณต๋ฐฑ๊ณผ ํํ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํํธ์จ์ด์์ ํ๋๋ฅผ ๋ฐ์ดํ๋ก ๋ฌถ์ง๋ง ์ ํ ๊ณต๋ฐฑ์ ์ฝ์ ํ๋ ๊ฒฝ์ฐ Snowflake๋ ์ฌ๋ ๋ฐ์ดํ ๋ฌธ์๊ฐ ์๋ ์ ํ ๊ณต๋ฐฑ์ ํ๋์ ์์์ผ๋ก ์ฝ์ต๋๋ค(์ฆ, ๋ฐ์ดํ๋ ํ๋ ๋ฐ์ดํฐ ๋ฌธ์์ด์ ์ผ๋ถ๋ก ํด์๋จ). ๋ฐ์ดํฐ ๋ก๋ฉ ์ค์ ๋ถํ์ํ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๋ ค๋ฉด ์ด ์ต์ ์
TRUE
๋ก ์ค์ ํ์ญ์์ค.์ด ํ์ผ ํ์ ์ต์ ์ MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ JSON ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ด์ ๋ก๋ฉํ ๋๋ง ๋ค์ ์์ ์ ์ ์ฉ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
FALSE
MULTI_LINE = TRUE | FALSE
์ฌ์ฉ: ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
์ฌ๋ฌ ์ค ํ์ฉ ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค. MULTI_LINE ์ด
FALSE
๋ก ์ค์ ๋์ด ์๊ณ JSON ๋ ์ฝ๋ ๋ด์ ์ ์ค์ด ์๋ ๊ฒฝ์ฐ ์ ์ค์ด ํฌํจ๋ ๋ ์ฝ๋๋ ์ค๋ฅ๋ก ํด์๋ฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
TRUE
NULL_IF = ( 'string1' [ , 'string2' , ... ] )
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
SQL NULL๋ก ๋ณํํ๊ฑฐ๋ ๊ทธ ๋ฐ๋๋ก ๋ณํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฌธ์์ด์ ๋๋ค. Snowflake๋ ๋ฐ์ดํฐ ๋ก๋ฉ ์์ค์ ์ด๋ฌํ ๋ฌธ์์ด์ SQL NULL๋ก ๋ฐ๊ฟ๋๋ค. ๋ ์ด์์ ๋ฌธ์์ด์ ์ง์ ํ๋ ค๋ฉด ๋ฌธ์์ด ๋ชฉ๋ก์ ๊ดํธ๋ก ๋ฌถ๊ณ ์ผํ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ์ ๊ฐ์ ๊ตฌ๋ถํฉ๋๋ค.
์ด ํ์ผ ํ์ ์ต์ ์ MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ JSON ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ด์ ๋ก๋ฉํ ๋๋ง ๋ค์ ์์ ์ ์ ์ฉ๋ฉ๋๋ค.
Snowflake๋ ๋ฐ์ดํฐ ํ์ ๊ณผ ๊ด๊ณ์์ด ๊ฐ์ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ NULL๋ก ๋ณํํฉ๋๋ค. ์๋ฅผ ๋ค์ด
2
๊ฐ ๊ฐ์ผ๋ก ์ง์ ๋๋ฉด2
์ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๋ฌธ์์ด ๋๋ ์ซ์๋ก ๋ณํ๋ฉ๋๋ค.์:
NULL_IF = ('\N', 'NULL', 'NUL', '')
์ด ์ต์ ์๋ ๋น ๋ฌธ์์ด์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
\N
(์ฆ, NULL)
FILE_EXTENSION = 'string' | NONE
- ์ฉ๋:
๋ฐ์ดํฐ ์ธ๋ก๋ฉ ์ ์ฉ
- ์ ์:
์คํ ์ด์ง๋ก ์ธ๋ก๋ฉ๋ ํ์ผ์ ํ์ฅ๋ช ์ ์ง์ ํฉ๋๋ค. ๋ชจ๋ ํ์ฅ๋ช ์ ํ์ฉํฉ๋๋ค. ์ํ๋ ์ํํธ์จ์ด๋ ์๋น์ค์์ ์ฝ์ ์ ์๋ ํ์ผ ํ์ฅ๋ช ์ ์ฌ์ฉ์๊ฐ ์ง์ ํด์ผ ํฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
null, ์ฆ ํ์ผ ํ์ฅ๋ช ์ด ํ์ ์ ํ
.json[compression]
์ผ๋ก ๊ฒฐ์ ๋๋ค๋ ์๋ฏธ๋ก, ์ฌ๊ธฐ์compression
์COMPRESSION
์ด ์ค์ ๋ ๊ฒฝ์ฐ ์์ถ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ถ๊ฐ๋๋ ํ์ฅ๋ช ์ ๋๋ค.
ENABLE_OCTAL = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
8์ง์ ์ซ์์ ๊ตฌ๋ฌธ ๋ถ์์ ํ ์ ์๊ฒ ํด์ฃผ๋ ๋ถ์ธ์ ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
FALSE
ALLOW_DUPLICATE = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
์ค๋ณต ์ค๋ธ์ ํธ ํ๋ ์ด๋ฆ์ ํ์ฉํ๋๋ก ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค(๋ง์ง๋ง ์ด๋ฆ๋ง ๋ณด์กด๋จ).
- ๊ธฐ๋ณธ๊ฐ:
FALSE
STRIP_OUTER_ARRAY = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
JSON ํ์์ ๋ฐ๊นฅ์ชฝ ๋๊ดํธ(์ฆ,
[ ]
)๋ฅผ ์ ๊ฑฐํ๋๋ก ์ง์ํ๋ ๋ถ์ธ์ ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
FALSE
STRIP_NULL_VALUES = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
JSON ํ์์
null
๊ฐ์ด ํฌํจ๋ ์ค๋ธ์ ํธ ํ๋ ๋๋ ๋ฐฐ์ด ์์๋ฅผ ์ ๊ฑฐํ๋๋ก ์ง์ํ๋ ๋ถ์ธ์ ๋๋ค. ์๋ฅผ ๋ค์ดTRUE
๋ก ์ค์ ํ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.์ด์
์ดํ
[null]
[]
[null,null,3]
[,,3]
{"a":null,"b":null,"c":123}
{"c":123}
{"a":[1,null,2],"b":{"x":null,"y":88}}
{"a":[1,,2],"b":{"y":88}}
- ๊ธฐ๋ณธ๊ฐ:
FALSE
REPLACE_INVALID_CHARACTERS = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
์ ํจํ์ง ์์ UTF-8 ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ๋์ฒด ๋ฌธ์(
๏ฟฝ
)๋ก ๋์ฒดํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ. ์ด ์ต์ ์ ์ผ๋์ผ ๋ฌธ์ ๋์ฒด๋ฅผ ์ํํฉ๋๋ค.- ๊ฐ:
TRUE
๋ก ์ค์ ํ๋ฉด Snowflake๊ฐ ์๋ชป๋ UTF-8 ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ๋์ฒด ๋ฌธ์๋ก ๋ฐ๊ฟ๋๋ค.FALSE
๋ก ์ค์ ํ๋ฉด ์๋ชป๋ UTF-8 ๋ฌธ์ ์ธ์ฝ๋ฉ์ด ๊ฐ์ง๋ ๋ ๋ก๋ฉ ์์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
FALSE
IGNORE_UTF8_ERRORS = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
UTF-8 ์ธ์ฝ๋ฉ ์ค๋ฅ๊ฐ ์ค๋ฅ ์กฐ๊ฑด์ ์์ฑํ๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค. ์ด๋
REPLACE_INVALID_CHARACTERS
์ ๋์ฒด ๊ตฌ๋ฌธ์ ๋๋ค.- ๊ฐ:
TRUE
๋ก ์ค์ ํ๋ฉด ์๋ชป๋ UTF-8 ์ํ์ค๊ฐ ์ ๋ถ ์ ๋์ฝ๋ ๋ฌธ์U+FFFD
(์ฆ, โ๋์ฒด ๋ฌธ์โ)๋ก ์๋์ผ๋ก ๋ฐ๋๋๋ค.FALSE
๋ก ์ค์ ํ๋ฉด ์๋ชป๋ UTF-8 ๋ฌธ์ ์ธ์ฝ๋ฉ์ด ๊ฐ์ง๋ ๋ ๋ก๋ฉ ์์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
FALSE
SKIP_BYTE_ORDER_MARK = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
๋ฐ์ดํฐ ํ์ผ์ ์๋ ๊ฒฝ์ฐ BOM(๋ฐ์ดํธ ์์ ํ์)๋ฅผ ๊ฑด๋๋ธ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค. BOM์ ๋ฐ์ดํฐ ํ์ผ์ ์์ ๋ถ๋ถ์์ ๋ฐ์ดํธ ์์์ ์ธ์ฝ๋ฉ ํ์์ ์ ์ํ๋ ๋ฌธ์ ์ฝ๋์ ๋๋ค.
FALSE
๋ก ์ค์ ํ๋ฉด Snowflake๊ฐ ๋ฐ์ดํฐ ํ์ผ์ ์๋ ๋ชจ๋ BOM์ ์ธ์ํ๋ฏ๋ก, BOM์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ํ ์ด๋ธ์ ์ฒซ ๋ฒ์งธ ์ด์ ๋ณํฉ๋๋ ๊ฒฐ๊ณผ๊ฐ ๋ ์ ์์ต๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
TRUE
TYPE = AVROยถ
COMPRESSION = AUTO | GZIP | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ๋ฐ์ดํฐ ํ์ผ์ ๋ํ ํ์ฌ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํฉ๋๋ค. Snowflake๋ ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ ์์ถ๋ ๋ฐ์ดํฐ ํ์ผ์ ์์ถํ ๋ฐฉ์์ ๊ฐ์งํด ๋ก๋ฉ์ ์ํด ํ์ผ์ ์์ถ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ง์ ๋ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํ์ผ์ ์์ถํฉ๋๋ค.
- ๊ฐ:
์ง์๋๋ ๊ฐ
์ฐธ๊ณ
AUTO
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ํ์ฌ ์๋์ผ๋ก ๊ฐ์งํ ์ ์๋ Brotli ์์ถ ํ์ผ์ ์ ์ธํ๊ณ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ด ์๋์ผ๋ก ๊ฐ์ง๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ํ์ผ์ ๊ธฐ๋ณธ๊ฐ์ธ gzip์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์์ถ๋ฉ๋๋ค.
GZIP
BROTLI
Brotli ์์ถ ํ์ผ์ ๋ก๋ฉ/์ธ๋ก๋ฉํ ๊ฒฝ์ฐ ์ง์ ํด์ผ ํฉ๋๋ค.
ZSTD
Zstandard v0.8 ์ด์์ด ์ง์๋ฉ๋๋ค.
DEFLATE
Deflate ์์ถ ํ์ผ(zlib ํค๋ RFC1950 ํฌํจ).
RAW_DEFLATE
์์ Deflate ์์ถ ํ์ผ(ํค๋ RFC1951 ์ ์ธ).
NONE
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ํ์ผ์ด ์์ถ๋์ง ์์์์ ๋ํ๋ ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ธ๋ก๋ฉ๋ ํ์ผ์ด ์์ถ๋์ง ์๋๋ก ์ง์ ํฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
AUTO
.
์ฐธ๊ณ
๊ธฐ๋ณธ AUTO
์ต์
์ผ๋ก ํ์ผ ๋ฐ ์ฝ๋ฑ ์์ถ์ด ๋ชจ๋ ๊ฒฐ์ ๋๋ฏ๋ก ๊ธฐ๋ณธ ์ต์
์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์์ถ ์ต์
์ง์ ์ ๋ธ๋ก(์ฝ๋ฑ) ์์ถ์ด ์๋ ํ์ผ ์์ถ์ ๊ฐ๋ฆฌํต๋๋ค.
TRIM_SPACE = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
๋ฌธ์์ด์์ ์ ํ ๊ณต๋ฐฑ๊ณผ ํํ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํํธ์จ์ด์์ ํ๋๋ฅผ ๋ฐ์ดํ๋ก ๋ฌถ์ง๋ง ์ ํ ๊ณต๋ฐฑ์ ์ฝ์ ํ๋ ๊ฒฝ์ฐ Snowflake๋ ์ฌ๋ ๋ฐ์ดํ ๋ฌธ์๊ฐ ์๋ ์ ํ ๊ณต๋ฐฑ์ ํ๋์ ์์์ผ๋ก ์ฝ์ต๋๋ค(์ฆ, ๋ฐ์ดํ๋ ํ๋ ๋ฐ์ดํฐ ๋ฌธ์์ด์ ์ผ๋ถ๋ก ํด์๋จ). ๋ฐ์ดํฐ ๋ก๋ฉ ์ค์ ๋ถํ์ํ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๋ ค๋ฉด ์ด ์ต์ ์
TRUE
๋ก ์ค์ ํ์ญ์์ค.์ด ํ์ผ ํ์ ์ต์ ์ MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ Avro ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ด์ ๋ก๋ฉํ ๋๋ง ๋ค์ ์์ ์ ์ ์ฉ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
FALSE
REPLACE_INVALID_CHARACTERS = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
์ ํจํ์ง ์์ UTF-8 ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ๋์ฒด ๋ฌธ์(
๏ฟฝ
)๋ก ๋์ฒดํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ. ์ด ์ต์ ์ ์ผ๋์ผ ๋ฌธ์ ๋์ฒด๋ฅผ ์ํํฉ๋๋ค.- ๊ฐ:
TRUE
๋ก ์ค์ ํ๋ฉด Snowflake๊ฐ ์๋ชป๋ UTF-8 ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ๋์ฒด ๋ฌธ์๋ก ๋ฐ๊ฟ๋๋ค.FALSE
๋ก ์ค์ ํ๋ฉด ์๋ชป๋ UTF-8 ๋ฌธ์ ์ธ์ฝ๋ฉ์ด ๊ฐ์ง๋ ๋ ๋ก๋ฉ ์์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
FALSE
NULL_IF = ( 'string1' [ , 'string2' , ... ] )
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
SQL NULL๋ก ๋ณํํ๊ฑฐ๋ ๊ทธ ๋ฐ๋๋ก ๋ณํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฌธ์์ด์ ๋๋ค. Snowflake๋ ๋ฐ์ดํฐ ๋ก๋ฉ ์์ค์ ์ด๋ฌํ ๋ฌธ์์ด์ SQL NULL๋ก ๋ฐ๊ฟ๋๋ค. ๋ ์ด์์ ๋ฌธ์์ด์ ์ง์ ํ๋ ค๋ฉด ๋ฌธ์์ด ๋ชฉ๋ก์ ๊ดํธ๋ก ๋ฌถ๊ณ ์ผํ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ์ ๊ฐ์ ๊ตฌ๋ถํฉ๋๋ค.
์ด ํ์ผ ํ์ ์ต์ ์ MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ Avro ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ด์ ๋ก๋ฉํ ๋๋ง ๋ค์ ์์ ์ ์ ์ฉ๋ฉ๋๋ค.
Snowflake๋ ๋ฐ์ดํฐ ํ์ ๊ณผ ๊ด๊ณ์์ด ๊ฐ์ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ NULL๋ก ๋ณํํฉ๋๋ค. ์๋ฅผ ๋ค์ด
2
๊ฐ ๊ฐ์ผ๋ก ์ง์ ๋๋ฉด2
์ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๋ฌธ์์ด ๋๋ ์ซ์๋ก ๋ณํ๋ฉ๋๋ค.์:
NULL_IF = ('\N', 'NULL', 'NUL', '')
์ด ์ต์ ์๋ ๋น ๋ฌธ์์ด์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
\N
(์ฆ, NULL)
TYPE = ORCยถ
TRIM_SPACE = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
๋ฌธ์์ด์์ ์ ํ ๊ณต๋ฐฑ๊ณผ ํํ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํํธ์จ์ด์์ ํ๋๋ฅผ ๋ฐ์ดํ๋ก ๋ฌถ์ง๋ง ์ ํ ๊ณต๋ฐฑ์ ์ฝ์ ํ๋ ๊ฒฝ์ฐ Snowflake๋ ์ฌ๋ ๋ฐ์ดํ ๋ฌธ์๊ฐ ์๋ ์ ํ ๊ณต๋ฐฑ์ ํ๋์ ์์์ผ๋ก ์ฝ์ต๋๋ค(์ฆ, ๋ฐ์ดํ๋ ํ๋ ๋ฐ์ดํฐ ๋ฌธ์์ด์ ์ผ๋ถ๋ก ํด์๋จ). ๋ฐ์ดํฐ ๋ก๋ฉ ์ค์ ๋ถํ์ํ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๋ ค๋ฉด ์ด ์ต์ ์
TRUE
๋ก ์ค์ ํ์ญ์์ค.์ด ํ์ผ ํ์ ์ต์ ์ MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ Orc ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ด์ ๋ก๋ฉํ ๋๋ง ๋ค์ ์์ ์ ์ ์ฉ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
FALSE
REPLACE_INVALID_CHARACTERS = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
์ ํจํ์ง ์์ UTF-8 ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ๋์ฒด ๋ฌธ์(
๏ฟฝ
)๋ก ๋์ฒดํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ. ์ด ์ต์ ์ ์ผ๋์ผ ๋ฌธ์ ๋์ฒด๋ฅผ ์ํํฉ๋๋ค.- ๊ฐ:
TRUE
๋ก ์ค์ ํ๋ฉด Snowflake๊ฐ ์๋ชป๋ UTF-8 ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ๋์ฒด ๋ฌธ์๋ก ๋ฐ๊ฟ๋๋ค.FALSE
๋ก ์ค์ ํ๋ฉด ์๋ชป๋ UTF-8 ๋ฌธ์ ์ธ์ฝ๋ฉ์ด ๊ฐ์ง๋ ๋ ๋ก๋ฉ ์์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
FALSE
NULL_IF = ( 'string1' [ , 'string2' , ... ] )
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
SQL NULL๋ก ๋ณํํ๊ฑฐ๋ ๊ทธ ๋ฐ๋๋ก ๋ณํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฌธ์์ด์ ๋๋ค. Snowflake๋ ๋ฐ์ดํฐ ๋ก๋ฉ ์์ค์ ์ด๋ฌํ ๋ฌธ์์ด์ SQL NULL๋ก ๋ฐ๊ฟ๋๋ค. ๋ ์ด์์ ๋ฌธ์์ด์ ์ง์ ํ๋ ค๋ฉด ๋ฌธ์์ด ๋ชฉ๋ก์ ๊ดํธ๋ก ๋ฌถ๊ณ ์ผํ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ์ ๊ฐ์ ๊ตฌ๋ถํฉ๋๋ค.
์ด ํ์ผ ํ์ ์ต์ ์ MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ Orc ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ด์ ๋ก๋ฉํ ๋๋ง ๋ค์ ์์ ์ ์ ์ฉ๋ฉ๋๋ค.
Snowflake๋ ๋ฐ์ดํฐ ํ์ ๊ณผ ๊ด๊ณ์์ด ๊ฐ์ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ NULL๋ก ๋ณํํฉ๋๋ค. ์๋ฅผ ๋ค์ด
2
๊ฐ ๊ฐ์ผ๋ก ์ง์ ๋๋ฉด2
์ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๋ฌธ์์ด ๋๋ ์ซ์๋ก ๋ณํ๋ฉ๋๋ค.์:
NULL_IF = ('\N', 'NULL', 'NUL', '')
์ด ์ต์ ์๋ ๋น ๋ฌธ์์ด์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
\N
(์ฆ, NULL)
TYPE = PARQUETยถ
COMPRESSION = AUTO | LZO | SNAPPY | NONE
- ์ฉ๋:
๋ฐ์ดํฐ ์ธ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
๋ฐ์ดํฐ ์ธ๋ก๋ฉ ์ Parquet ํ์ผ์ ์ด์ ๋ํ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํฉ๋๋ค.
- ๊ฐ:
์ง์๋๋ ๊ฐ
์ฐธ๊ณ
AUTO
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ด ์๋์ผ๋ก ๊ฐ์ง๋ฉ๋๋ค. Brotli, gzip, Lempel-Ziv-Oberhumer(LZO), LZ4, Snappy ๋๋ Zstandard v0.8 ์ด์์ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ํฉ๋๋ค. . ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ธ๋ก๋ฉ๋ ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก Snappy ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์์ถ๋ฉ๋๋ค.
LZO
๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก Snappy ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์์ถ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ LZO ์์ถ ํ์ผ๋ก ์ธ๋ก๋ฉํ๋ ๊ฒฝ์ฐ ์ด ๊ฐ์ ์ง์ ํฉ๋๋ค.
SNAPPY
๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก Snappy ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์์ถ๋ฉ๋๋ค. ์ด ๊ฐ์ ์ ํ์ ์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค.
NONE
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ํ์ผ์ด ์์ถ๋์ง ์์์์ ๋ํ๋ ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ธ๋ก๋ฉ๋ ํ์ผ์ด ์์ถ๋์ง ์๋๋ก ์ง์ ํฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
AUTO
SNAPPY_COMPRESSION = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ์ธ๋ก๋ฉ ์ ์ฉ
์ง์๋๋ ๊ฐ
์ฐธ๊ณ
AUTO
์ ๋ก๋๋ ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก Snappy ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์์ถ๋ฉ๋๋ค.
SNAPPY
Snappy ์์ถ ํ์ผ์ ์ธ๋ก๋ฉํ๋ ๊ฒฝ์ฐ ์ง์ ํ ์ ์์ต๋๋ค.
NONE
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ํ์ผ์ด ์์ถ๋์ง ์์์์ ๋ํ๋ ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ธ๋ก๋ฉ๋ ํ์ผ์ด ์์ถ๋์ง ์๋๋ก ์ง์ ํฉ๋๋ค.
- ์ ์:
์ธ๋ก๋ฉ๋ ํ์ผ์ด SNAPPY ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์์ถ๋๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
์ฐธ๊ณ
์ฌ์ฉ๋์ง ์์.
COMPRESSION = SNAPPY
๋ฅผ ๋์ ์ฌ์ฉํ์ญ์์ค.- ์ ํ ์ฌํญ:
๋ฐ์ดํฐ ์ธ๋ก๋ฉ ์์ ์ฉ์ผ๋ก๋ง ์ง์๋ฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
TRUE
BINARY_AS_TEXT = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
์ ์๋ ๋ ผ๋ฆฌ ๋ฐ์ดํฐ ํ์ ์ด ์๋ ์ด์ UTF-8 ํ ์คํธ๋ก ํด์ํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
FALSE
๋ก ์ค์ ํ๋ฉด Snowflake๊ฐ ์ด๋ฌํ ์ด์ ์ด์ง ๋ฐ์ดํฐ๋ก ํด์ํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
TRUE
์ฐธ๊ณ
์ ์ฌ์ ์ธ ๋ณํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋๋ก BINARY_AS_TEXT๋ฅผ FALSE๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
TRIM_SPACE = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
๋ฌธ์์ด์์ ์ ํ ๊ณต๋ฐฑ๊ณผ ํํ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํํธ์จ์ด์์ ํ๋๋ฅผ ๋ฐ์ดํ๋ก ๋ฌถ์ง๋ง ์ ํ ๊ณต๋ฐฑ์ ์ฝ์ ํ๋ ๊ฒฝ์ฐ Snowflake๋ ์ฌ๋ ๋ฐ์ดํ ๋ฌธ์๊ฐ ์๋ ์ ํ ๊ณต๋ฐฑ์ ํ๋์ ์์์ผ๋ก ์ฝ์ต๋๋ค(์ฆ, ๋ฐ์ดํ๋ ํ๋ ๋ฐ์ดํฐ ๋ฌธ์์ด์ ์ผ๋ถ๋ก ํด์๋จ). ๋ฐ์ดํฐ ๋ก๋ฉ ์ค์ ๋ถํ์ํ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๋ ค๋ฉด ์ด ์ต์ ์
TRUE
๋ก ์ค์ ํ์ญ์์ค.์ด ํ์ผ ํ์ ์ต์ ์ MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ Parquet ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ด์ ๋ก๋ฉํ ๋๋ง ๋ค์ ์์ ์ ์ ์ฉ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
FALSE
USE_LOGICAL_TYPE = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ, ์คํ ์ด์ง๋ ํ์ผ์ ๋ฐ์ดํฐ ์ฟผ๋ฆฌ, ์คํค๋ง ๊ฐ์ง.
- ์ ์:
Parquet ๋ ผ๋ฆฌ ์ ํ์ ์ฌ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค. Snowflake๋ ์ด ํ์ผ ํ์ ์ต์ ์ผ๋ก ๋ฐ์ดํฐ ๋ก๋ ์ค์ Parquet ๋ ผ๋ฆฌ ์ ํ์ ํด์ํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Parquet ๋ ผ๋ฆฌ ์ ํ ์ ์ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. Parquet ๋ ผ๋ฆฌ ์ ํ์ ํ์ฑํํ๋ ค๋ฉด ์ ํ์ผ ํ์ ์ต์ ์ ์์ฑํ ๋ USE_LOGICAL_TYPE์ TRUE๋ก ์ค์ ํ์ญ์์ค.
- ์ ํ ์ฌํญ:
๋ฐ์ดํฐ ์ธ๋ก๋ฉ์๋ ์ง์๋์ง ์์ต๋๋ค.
USE_VECTORIZED_SCANNER = TRUE | FALSE
- ์ฉ๋:
์คํ ์ด์ง๋ ํ์ผ์์์ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ๋ฐ์ดํฐ ์ฟผ๋ฆฌ
- ์ ์:
Parquet ํ์ผ์ ๋ก๋ํ ๋ ๋ฒกํฐํ๋ ์ค์บ๋๋ฅผ ์ฌ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
FALSE
. ํฅํ BCR์์ ๊ธฐ๋ณธ๊ฐ์TRUE
์ ๋๋ค.
๋ฒกํฐํ๋ ์ค์บ๋๋ฅผ ์ฌ์ฉํ๋ฉด Parquet ํ์ผ์ ์ด ํ์์ ์ ํฉํ๊ธฐ ๋๋ฌธ์ Parquet ํ์ผ ๋ก๋ฉ ๋๊ธฐ ์๊ฐ์ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค. ์ค์บ๋๋ ์ ํํ ์ด์ ํ์ ์งํฉ ๋ฑ Parquet ํ์ผ์์ ๊ด๋ จ ์น์ ๋ง ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
USE_VECTORIZED_SCANNER
๊ฐTRUE
๋ก ์ค์ ๋ ๊ฒฝ์ฐ ๋ฒกํฐํ๋ ์ค์บ๋๋ ๋ค์๊ณผ ๊ฐ์ ๋์์ ์ํํฉ๋๋ค.BINARY_AS_TEXT
์ต์ ์ ์ค์ ์ค์ ๋ ๊ฐ์ ๊ด๊ณ์์ด ํญ์FALSE
๋ก,USE_LOGICAL_TYPE
์ต์ ์ ํญ์TRUE
๋ก ์ทจ๊ธ๋ฉ๋๋ค.๋ฒกํฐํ๋ ์ค์บ๋๋ Parquet ๋งต ์ ํ์ ์ง์ํฉ๋๋ค. ๋งต ์ ํ ์ค์บ์ ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"my_map": { "k1": "v1", "k2": "v2" }
๋ค์ ์์ ์์ ๋ณผ ์ ์๋ฏ์ด ๋ฒกํฐํ๋ ์ค์บ๋๋ ์ถ๋ ฅ์
NULL
๊ฐ์ ํ์ํฉ๋๋ค."person": { "name": "Adam", "nickname": null, "age": 34, "phone_numbers": [ "1234567890", "0987654321", null, "6781234590" ] }
๋ฒกํฐํ๋ ์ค์บ๋๋ ์๊ฐ๊ณผ ํ์์คํฌํ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌํฉ๋๋ค.
Parquet
Snowflake ๋ฒกํฐํ๋ ์ค์บ๋
TimeType(isAdjustedToUtc=True/False, ๋จ์=MILLIS/MICROS/NANOS)
TIME
TimestampType(isAdjustedToUtc=True, ๋จ์=MILLIS/MICROS/NANOS)
TIMESTAMP_LTZ
TimestampType(isAdjustedToUtc=False, ๋จ์=MILLIS/MICROS/NANOS)
TIMESTAMP_NTZ
INT96
TIMESTAMP_LTZ
USE_VECTORIZED_SCANNER
๊ฐFALSE
๋ก ์ค์ ๋ ๊ฒฝ์ฐ ์ค์บ๋์ ๋์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.์ด ์ต์ ์ Parquet ๋งต์ ์ง์ํ์ง ์์ต๋๋ค. ๋งต ์ ํ ์ค์บ์ ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"my_map": { "key_value": [ { "key": "k1", "value": "v1" }, { "key": "k2", "value": "v2" } ] }
๋ค์ ์์ ์์ ๋ณผ ์ ์๋ฏ์ด ์ด ์ต์ ์ ์ค์บ ์ถ๋ ฅ์
NULL
๊ฐ์ ๋ช ์์ ์ผ๋ก ํ์ํ์ง ์์ต๋๋ค."person": { "name": "Adam", "age": 34 "phone_numbers": [ "1234567890", "0987654321", "6781234590" ] }
์ด ์ต์ ์ ์๊ฐ๊ณผ ํ์์คํฌํ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌํฉ๋๋ค.
Parquet
USE_LOGICAL_TYPE = TRUE์ธ ๊ฒฝ์ฐ
USE_LOGICAL_TYPE = FALSE์ธ ๊ฒฝ์ฐ
TimeType(isAdjustedToUtc=True/False, ๋จ์=MILLIS/MICROS)
TIME
TIME(ConvertedType์ด ์๋ ๊ฒฝ์ฐ)
INTEGER(ConvertedType์ด ์๋ ๊ฒฝ์ฐ)
TimeType(isAdjustedToUtc=True/False, ๋จ์=NANOS)
TIME
INTEGER
TimestampType(isAdjustedToUtc=True, ๋จ์=MILLIS/MICROS)
TIMESTAMP_LTZ
TIMESTAMP_NTZ
TimestampType(isAdjustedToUtc=True, ๋จ์=NANOS)
TIMESTAMP_LTZ
INTEGER
TimestampType(isAdjustedToUtc=False, ๋จ์=MILLIS/MICROS)
TIMESTAMP_NTZ
TIMESTAMP_LTZ(ConvertedType์ด ์๋ ๊ฒฝ์ฐ)
INTEGER(ConvertedType์ด ์๋ ๊ฒฝ์ฐ)
TimestampType(isAdjustedToUtc=False, ๋จ์=NANOS)
TIMESTAMP_NTZ
INTEGER
INT96
TIMESTAMP_NTZ
TIMESTAMP_NTZ
REPLACE_INVALID_CHARACTERS = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
์ ํจํ์ง ์์ UTF-8 ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ๋์ฒด ๋ฌธ์(
๏ฟฝ
)๋ก ๋์ฒดํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ. ์ด ์ต์ ์ ์ผ๋์ผ ๋ฌธ์ ๋์ฒด๋ฅผ ์ํํฉ๋๋ค.- ๊ฐ:
TRUE
๋ก ์ค์ ํ๋ฉด Snowflake๊ฐ ์๋ชป๋ UTF-8 ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ๋์ฒด ๋ฌธ์๋ก ๋ฐ๊ฟ๋๋ค.FALSE
๋ก ์ค์ ํ๋ฉด ์๋ชป๋ UTF-8 ๋ฌธ์ ์ธ์ฝ๋ฉ์ด ๊ฐ์ง๋ ๋ ๋ก๋ฉ ์์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
FALSE
NULL_IF = ( 'string1' [ , 'string2' , ... ] )
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
SQL NULL๋ก ๋ณํํ๊ฑฐ๋ ๊ทธ ๋ฐ๋๋ก ๋ณํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฌธ์์ด์ ๋๋ค. Snowflake๋ ๋ฐ์ดํฐ ๋ก๋ฉ ์์ค์ ์ด๋ฌํ ๋ฌธ์์ด์ SQL NULL๋ก ๋ฐ๊ฟ๋๋ค. ๋ ์ด์์ ๋ฌธ์์ด์ ์ง์ ํ๋ ค๋ฉด ๋ฌธ์์ด ๋ชฉ๋ก์ ๊ดํธ๋ก ๋ฌถ๊ณ ์ผํ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ์ ๊ฐ์ ๊ตฌ๋ถํฉ๋๋ค.
์ด ํ์ผ ํ์ ์ต์ ์ MATCH_BY_COLUMN_NAME ๋ณต์ฌ ์ต์ ์ ์ฌ์ฉํ์ฌ Parquet ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ด์ ๋ก๋ฉํ ๋๋ง ๋ค์ ์์ ์ ์ ์ฉ๋ฉ๋๋ค.
Snowflake๋ ๋ฐ์ดํฐ ํ์ ๊ณผ ๊ด๊ณ์์ด ๊ฐ์ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ NULL๋ก ๋ณํํฉ๋๋ค. ์๋ฅผ ๋ค์ด
2
๊ฐ ๊ฐ์ผ๋ก ์ง์ ๋๋ฉด2
์ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๋ฌธ์์ด ๋๋ ์ซ์๋ก ๋ณํ๋ฉ๋๋ค.์:
NULL_IF = ('\N', 'NULL', 'NUL', '')
์ด ์ต์ ์๋ ๋น ๋ฌธ์์ด์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
\N
(์ฆ, NULL)
TYPE = XMLยถ
COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ๋ฐ์ดํฐ ํ์ผ์ ๋ํ ํ์ฌ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํฉ๋๋ค. Snowflake๋ ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ ์์ถ๋ ๋ฐ์ดํฐ ํ์ผ์ ์์ถํ ๋ฐฉ์์ ๊ฐ์งํด ๋ก๋ฉ์ ์ํด ํ์ผ์ ์์ถ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ง์ ๋ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํ์ผ์ ์์ถํฉ๋๋ค.
- ๊ฐ:
์ง์๋๋ ๊ฐ
์ฐธ๊ณ
AUTO
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ํ์ฌ ์๋์ผ๋ก ๊ฐ์งํ ์ ์๋ Brotli ์์ถ ํ์ผ์ ์ ์ธํ๊ณ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ด ์๋์ผ๋ก ๊ฐ์ง๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ํ์ผ์ ๊ธฐ๋ณธ๊ฐ์ธ gzip์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์์ถ๋ฉ๋๋ค.
GZIP
BZ2
BROTLI
Brotli ์์ถ ํ์ผ์ ๋ก๋ฉ/์ธ๋ก๋ฉํ ๊ฒฝ์ฐ ์ง์ ํด์ผ ํฉ๋๋ค.
ZSTD
Zstandard v0.8 ์ด์์ด ์ง์๋ฉ๋๋ค.
DEFLATE
Deflate ์์ถ ํ์ผ(zlib ํค๋ RFC1950 ํฌํจ).
RAW_DEFLATE
์์ Deflate ์์ถ ํ์ผ(ํค๋ RFC1951 ์ ์ธ).
NONE
๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ ๋ ํ์ผ์ด ์์ถ๋์ง ์์์์ ๋ํ๋ ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก๋ฉํ ๋ ์ธ๋ก๋ฉ๋ ํ์ผ์ด ์์ถ๋์ง ์๋๋ก ์ง์ ํฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
AUTO
IGNORE_UTF8_ERRORS = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
UTF-8 ์ธ์ฝ๋ฉ ์ค๋ฅ๊ฐ ์ค๋ฅ ์กฐ๊ฑด์ ์์ฑํ๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค. ์ด๋
REPLACE_INVALID_CHARACTERS
์ ๋์ฒด ๊ตฌ๋ฌธ์ ๋๋ค.- ๊ฐ:
TRUE
๋ก ์ค์ ํ๋ฉด ์๋ชป๋ UTF-8 ์ํ์ค๊ฐ ์ ๋ถ ์ ๋์ฝ๋ ๋ฌธ์U+FFFD
(์ฆ, โ๋์ฒด ๋ฌธ์โ)๋ก ์๋์ผ๋ก ๋ฐ๋๋๋ค.FALSE
๋ก ์ค์ ํ๋ฉด ์๋ชป๋ UTF-8 ๋ฌธ์ ์ธ์ฝ๋ฉ์ด ๊ฐ์ง๋ ๋ ๋ก๋ฉ ์์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
FALSE
PRESERVE_SPACE = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
XML ํ์๊ฐ ์์ ์ฝํ ์ธ ์ ์ ํ ๋ฐ ํํ ๊ณต๋ฐฑ์ ๋ณด์กดํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
FALSE
STRIP_OUTER_ELEMENT = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
XML ํ์๊ฐ ์ธ๋ถ XML ์์๋ฅผ ์ ๊ฑฐํ์ฌ 2์ฐจ ์์ค ์์๋ฅผ ๋ณ๊ฐ์ ๋ฌธ์๋ก ๋ ธ์ถํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
FALSE
DISABLE_AUTO_CONVERT = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
XML ํ์๊ฐ ์ซ์ ๊ฐ๊ณผ ๋ถ์ธ ๊ฐ์ ํ ์คํธ์์ ๊ธฐ๋ณธ ํํ์ผ๋ก ์๋ ๋ณํํ์ง ๋ชปํ๊ฒ ํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ:
FALSE
REPLACE_INVALID_CHARACTERS = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ธ๋ถ ํ ์ด๋ธ
- ์ ์:
์ ํจํ์ง ์์ UTF-8 ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ๋์ฒด ๋ฌธ์(
๏ฟฝ
)๋ก ๋์ฒดํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ. ์ด ์ต์ ์ ์ผ๋์ผ ๋ฌธ์ ๋์ฒด๋ฅผ ์ํํฉ๋๋ค.- ๊ฐ:
TRUE
๋ก ์ค์ ํ๋ฉด Snowflake๊ฐ ์๋ชป๋ UTF-8 ๋ฌธ์๋ฅผ ์ ๋์ฝ๋ ๋์ฒด ๋ฌธ์๋ก ๋ฐ๊ฟ๋๋ค.FALSE
๋ก ์ค์ ํ๋ฉด ์๋ชป๋ UTF-8 ๋ฌธ์ ์ธ์ฝ๋ฉ์ด ๊ฐ์ง๋ ๋ ๋ก๋ฉ ์์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
FALSE
SKIP_BYTE_ORDER_MARK = TRUE | FALSE
- ์ฉ๋:
๋ฐ์ดํฐ ๋ก๋ฉ ์ ์ฉ
- ์ ์:
์ ๋ ฅ ํ์ผ์ ์๋ ๋ชจ๋ BOM(๋ฐ์ดํธ ์์ ํ์)์ ๊ฑด๋๋ธ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ถ์ธ์ ๋๋ค. BOM์ ๋ฐ์ดํฐ ํ์ผ์ ์์ ๋ถ๋ถ์์ ๋ฐ์ดํธ ์์์ ์ธ์ฝ๋ฉ ํ์์ ์ ์ํ๋ ๋ฌธ์ ์ฝ๋์ ๋๋ค.
FALSE
๋ก ์ค์ ํ๋ฉด Snowflake๊ฐ ๋ฐ์ดํฐ ํ์ผ์ ์๋ ๋ชจ๋ BOM์ ์ธ์ํ๋ฏ๋ก, BOM์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ํ ์ด๋ธ์ ์ฒซ ๋ฒ์งธ ์ด์ ๋ณํฉ๋๋ ๊ฒฐ๊ณผ๊ฐ ๋ ์ ์์ต๋๋ค.- ๊ธฐ๋ณธ๊ฐ:
TRUE
์ก์ธ์ค ์ ์ด ์๊ตฌ ์ฌํญยถ
์ด ์์ ์ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ญํ ์๋ ์ต์ํ ๋ค์ ๊ถํ ์ด ์์ด์ผ ํฉ๋๋ค.
๊ถํ |
์ค๋ธ์ ํธ |
์ฐธ๊ณ |
---|---|---|
CREATE FILE FORMAT |
์คํค๋ง |
|
OWNERSHIP |
ํ์ผ ํ์ |
Note that in a managed access schema, only the schema owner (i.e. the role with the OWNERSHIP privilege on the schema) or a role with the MANAGE GRANTS privilege can grant or revoke privileges on objects in the schema, including future grants. |
์คํค๋ง์ ๋ชจ๋ ์ค๋ธ์ ํธ์ ๋ํด ์์ ์ ์ํํ๋ ค๋ฉด ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์คํค๋ง์ ๋ํ USAGE ๊ถํ.
์ง์ ๋ ๊ถํ ์ธํธ๋ก ์ฌ์ฉ์ ์ง์ ์ญํ ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ์ฌ์ฉ์ ์ง์ ์ญํ ๋ง๋ค๊ธฐ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
๋ณด์ ์ค๋ธ์ ํธ ์ ๋ํด SQL ์์ ์ ์ํํ๊ธฐ ์ํ ์ญํ ๊ณผ ๊ถํ ๋ถ์ฌ์ ๋ํ ์ผ๋ฐ์ ์ธ ์ ๋ณด๋ ์ก์ธ์ค ์ ์ด์ ๊ฐ์ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
CREATE OR ALTER FILE FORMAT ์ฌ์ฉ๋ฒ ๋ ธํธยถ
ALTER FILE FORMAT ๋ช ๋ น์ ๋ชจ๋ ์ ํ ์ฌํญ์ด ์ ์ฉ๋ฉ๋๋ค.
TEMP FILE FORMAT ์ ์ผ๋ฐ FILE FORMAT ์ผ๋ก ๋ฐ๊ฟ ์ ์์ผ๋ฉฐ ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
TYPE ์์ฑ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ฌ์ฉ๋ฒ ๋ ธํธยถ
์กฐ์ฌ
(CREATE OR REPLACE FILE FORMAT์ ์ฌ์ฉํ์ฌ) ํ์ผ ํ์์ ๋ค์ ๋ง๋ค๋ฉด ํ์ผ ํ์๊ณผ ์ด๋ฅผ ์ฐธ์กฐํ๋ ์ธ๋ถ ํ ์ด๋ธ ๊ฐ์ ์ฐ๊ฒฐ์ด ๋์ด์ง๋๋ค. ์ด๋ ์ธ๋ถ ํ ์ด๋ธ์ด ํ์ผ ํ์์ ์ด๋ฆ์ด ์๋๋ผ ์จ๊ฒจ์ง ID๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ํ์์ ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. CREATE OR REPLACE ๊ตฌ๋ฌธ์ด ์ค๋ธ์ ํธ๋ฅผ ์ญ์ ํ๊ณ ๋ค๋ฅธ ์จ๊ฒจ์ง ID๋ก ์ ์ฅ์ ํตํฉ์ ๋ค์ ์์ฑํ๋ ์์ ์ด ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ํ๋ฉ๋๋ค.
ํ๋ ์ด์์ ์ธ๋ถ ํ ์ด๋ธ์ ์ฐ๊ฒฐ๋ ํ์ผ ํ์์ ๋ค์ ๋ง๋ค์ด์ผ ํ๋ ๊ฒฝ์ฐ (CREATE OR REPLACE EXTERNAL TABLE์ ์ฌ์ฉํ์ฌ) ์ธ๋ถ ํ ์ด๋ธ์ ๊ฐ๊ฐ ๋ค์ ๋ง๋ค์ด ์ฐ๊ฒฐ์ ๋ค์ ์ค์ ํด์ผ ํฉ๋๋ค. GET_DDL ํจ์๋ฅผ ํธ์ถํ์ฌ ๊ฐ ์ธ๋ถ ํ ์ด๋ธ์ ๋ค์ ๋ง๋๋ DDL ๋ฌธ์ ๋ถ๋ฌ์ต๋๋ค.
SQL ๋ฌธ์์ ์ถฉ๋ํ๋ ํ์ผ ํ์ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค. ๊ฐ์ ์ต์ ์ ์๋ก ๋ค๋ฅธ ๊ฐ(์:
...TYPE = 'CSV' ... TYPE = 'JSON'...
)์ผ๋ก ์ฌ๋ฌ ๋ฒ ์ง์ ํ๋ฉด ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค.๋ฉํ๋ฐ์ดํฐ ๊ด๋ จ:
์ฃผ์
๊ณ ๊ฐ์ Snowflake ์๋น์ค๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ์ธ ๋ฐ์ดํฐ(์ฌ์ฉ์ ์ค๋ธ์ ํธ ์ ์ธ), ๋ฏผ๊ฐํ ๋ฐ์ดํฐ, ์์ถ ํต์ ๋์ ๋ฐ์ดํฐ ๋๋ ๊ธฐํ ๊ท์ ๋ฐ์ดํฐ๊ฐ ๋ฉํ๋ฐ์ดํฐ๋ก ์ ๋ ฅ๋์ง ์๋๋ก ํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Snowflake์ ๋ฉํ๋ฐ์ดํฐ ํ๋ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
OR REPLACE
๋ฐIF NOT EXISTS
์ ์ ์ํธ ๋ฐฐํ์ ์ ๋๋ค. ๋ ๋ฌธ์๋ฅผ ๊ฐ์ ๋ฌธ์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.CREATE OR REPLACE <์ค๋ธ์ ํธ> ๋ฌธ์ ์์์ฑ์ ๋๋ค. ์ฆ, ์ค๋ธ์ ํธ๊ฐ ๋ฐ๋ ๋ ๋จ์ผ ํธ๋์ญ์ ์ผ๋ก ์ด์ ์ค๋ธ์ ํธ๊ฐ ์ญ์ ๋๊ณ ์ ์ค๋ธ์ ํธ๊ฐ ์์ฑ๋ฉ๋๋ค.
์ยถ
๋ชจ๋ ๊ธฐ๋ณธ CSV ํ์ ์ต์
์ ์ฌ์ฉํ๊ณ my_csv_format
์ผ๋ก ๋ช
๋ช
๋ CSV ํ์ผ ํ์์ ๋ง๋ญ๋๋ค.
CREATE OR REPLACE FILE FORMAT my_csv_format
TYPE = CSV
COMMENT = 'my_file_format';
my_csv_format
์ ๋ณ๊ฒฝํ์ฌ ๋ฐ์ดํฐ ํ์ผ์ ๋ํ ๋ค์ ๊ท์น์ ์ ์ํ๊ณ ์ค๋ช
์ ์ค์ ํด์ ํฉ๋๋ค.
ํ๋๋ ํ์ดํ ๋ฌธ์(
|
)๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ๋ถ๋ฉ๋๋ค.ํ์ผ์ ๊ฑด๋๋ธ ๋จ์ผ ํค๋ ์ค์ ํฌํจํฉ๋๋ค.
๋ฌธ์์ด
NULL
๋ฐnull
์ NULL ๊ฐ์ผ๋ก ๋์ฒด๋ฉ๋๋ค.๋น ๋ฌธ์์ด์ NULL ๊ฐ์ผ๋ก ํด์๋ฉ๋๋ค.
GZIP ์์ถ์ ์ฌ์ฉํ์ฌ ํ์ผ์ ์์ถ/์์ถ ํด์ ํฉ๋๋ค.
CREATE OR ALTER FILE FORMAT my_csv_format
TYPE = CSV
FIELD_DELIMITER = '|'
SKIP_HEADER = 1
NULL_IF = ('NULL', 'null')
EMPTY_FIELD_AS_NULL = true
COMPRESSION = gzip;
๋ชจ๋ ๊ธฐ๋ณธ JSON ํ์ ์ต์
์ ์ฌ์ฉํ๊ณ my_json_format
์ผ๋ก ๋ช
๋ช
๋ JSON ํ์ผ ํ์์ ๋ง๋ญ๋๋ค.
CREATE OR REPLACE FILE FORMAT my_json_format
TYPE = JSON;
๋ฌผ๋ฆฌ์ ์ ํ์ด๋ ๋ ๊ฑฐ์ ๋ณํ ์ ํ ๋์ PARQUET ๋
ผ๋ฆฌ ์ ํ์ ์ฌ์ฉํ๋ my_parquet_format
์ด๋ผ๋ PARQUET ํ์ผ ํ์์ ์์ฑํฉ๋๋ค.
CREATE OR REPLACE FILE FORMAT my_parquet_format
TYPE = PARQUET
USE_VECTORIZED_SCANNER = TRUE
USE_LOGICAL_TYPE = TRUE;