ФОРМАТ ФАЙЛА по умолчанию для синтаксического анализа CSV в Snowflake интерпретирует двойную строку с обратной косой чертой '{"name": "foo \\uNo bar"}'
как escape-последовательность для символа \
, что означает, что последовательность символов \uNo
передается в PARSE_JSON, которая затем завершается неудачей, потому что \uNo
недопустимая escape-последовательность для строки JSON. Вы можете предотвратить это, переопределив параметры escape-последовательности FILE FORMAT.
Для данного CSV-файла:
JSON
'{"name": "foo \\uNo bar"}'
И следующих операторов CREATE TABLE и COPY INTO:
CREATE OR REPLACE TABLE JSON_TEST (JSON TEXT);
COPY INTO JSON_TEST
FROM @my_db.public.my_s3_stage/json.csv
FILE_FORMAT = (TYPE = CSV
SKIP_HEADER = 1
FIELD_OPTIONALLY_ENCLOSED_BY = '\''
ESCAPE = NONE
ESCAPE_UNENCLOSED_FIELD = NONE);
Я могу проанализировать результат как JSON:
SELECT PARSE_JSON(JSON) FROM JSON_TEST;
, который возвращает
+-----------------------------+
| JSON |
+-----------------------------|
| { "name": "foo \\uNo bar" } |
+-----------------------------+