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>' ]
Copy

์—ฌ๊ธฐ์„œ

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
Copy

๋ฒ ๋ฆฌ์–ธํŠธ ๊ตฌ๋ฌธยถ

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>' ]
Copy

ํ•„์ˆ˜ ๋งค๊ฐœ ๋ณ€์ˆ˜ยถ

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<
Copy

(์ด ์˜ˆ์—์„œ ๋Œ€๊ด„ํ˜ธ๋Š” ๋กœ๋”ฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€๊ด„ํ˜ธ๋Š” ๋กœ๋”ฉ๋œ ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘๊ณผ ๋์˜ ๊ฒฝ๊ณ„๋ฅผ ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.)

๊ธฐ๋ณธ๊ฐ’:

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"
      }
    
    Copy
  • ๋‹ค์Œ ์˜ˆ์ œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ฒกํ„ฐํ™”๋œ ์Šค์บ๋„ˆ๋Š” ์ถœ๋ ฅ์— NULL ๊ฐ’์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

    "person":
     {
      "name": "Adam",
      "nickname": null,
      "age": 34,
      "phone_numbers":
      [
        "1234567890",
        "0987654321",
        null,
        "6781234590"
      ]
      }
    
    Copy
  • ๋ฒกํ„ฐํ™”๋œ ์Šค์บ๋„ˆ๋Š” ์‹œ๊ฐ„๊ณผ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    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"
          }
        ]
      }
    
    Copy
  • ๋‹ค์Œ ์˜ˆ์ œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์ด ์˜ต์…˜์€ ์Šค์บ” ์ถœ๋ ฅ์— NULL ๊ฐ’์„ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    "person":
     {
      "name": "Adam",
      "age": 34
      "phone_numbers":
      [
       "1234567890",
       "0987654321",
       "6781234590"
      ]
     }
    
    Copy
  • ์ด ์˜ต์…˜์€ ์‹œ๊ฐ„๊ณผ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    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

ํŒŒ์ผ ํ˜•์‹

  • ์Šคํ‚ค๋งˆ์— ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ž„์‹œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•œ OWNERSHIP ๊ถŒํ•œ์„ ์—ญํ• ์— ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ์ƒ์†ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ์กด ํŒŒ์ผ ํ˜•์‹์— ๋Œ€ํ•œ CREATE OR ALTER FILE FORMAT ๋ฌธ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

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';
Copy

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;
Copy

๋ชจ๋“  ๊ธฐ๋ณธ JSON ํ˜•์‹ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  my_json_format ์œผ๋กœ ๋ช…๋ช…๋œ JSON ํŒŒ์ผ ํ˜•์‹์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

CREATE OR REPLACE FILE FORMAT my_json_format
  TYPE = JSON;
Copy

๋ฌผ๋ฆฌ์  ์œ ํ˜•์ด๋‚˜ ๋ ˆ๊ฑฐ์‹œ ๋ณ€ํ™˜ ์œ ํ˜• ๋Œ€์‹  PARQUET ๋…ผ๋ฆฌ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” my_parquet_format ์ด๋ผ๋Š” PARQUET ํŒŒ์ผ ํ˜•์‹์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

CREATE OR REPLACE FILE FORMAT my_parquet_format
  TYPE = PARQUET
  USE_VECTORIZED_SCANNER = TRUE
  USE_LOGICAL_TYPE = TRUE;
Copy