Снежинка GET: (VARCHAR (16777216), VARCHAR (12)) - PullRequest
0 голосов
/ 11 января 2020

Я загрузил файл JSON на сцену Снежинка. Теперь моя цель - скопировать содержимое файла в реляционную таблицу.

Таблица определена как имеющая столбцы varchar или boolean.

'' '{"requestRefid": "W2W8P" , "requesttid": "kki8786f1b-03eb", "requestTypes": ["Не продавать"], "subjectTypes": ["Текущий клиент"], "firstName": "Dan", "lastName": "Murrary" , "email": "k99008a85ki@gmail.com", "phone": "410000869", "emailValidation": true, "phoneValidation": true, "message": "Confirm",} '' '

Здесь является оператором COPY, который я использую:

'' 'скопируйте в ТЕСТ. "PUBLI C". ЗАПРОСЫ (REQUESTREFID, REQUESTID, FIRSTNAME, LASTNAME, EMAIL, PHONE, EMAILVALIDATION, PHONEVALIDATION, IDVALIDATION, MESSAGE, MESSAGE , CHANNEL) из (выберите $ 1: requestRefid, $ 1: requesttid, $ 1: firstName, $ 1: lastName, $ 1: электронная почта, $ 1: телефон, $ 1: emailValidation, $ 1: phoneValidation, $ 1: idValidation, $ 1: сообщение, $ 1: канал из @ sf_tut_stage / sample. json t); '' '

Вот ошибка, которую я получаю: SQL Ошибка [1044] [42P13]: SQL Ошибка компиляции: строка ошибки 2 в позиции 18 Недопустимые типы аргументов для функции' GET ': ( VARCHAR (16777216), VARCHAR (12)) SQL ошибка компиляции: строка ошибки 2 в позиции 18 Недопустимые типы аргументов для функции 'GET': (VARCHAR (16777216), VARCHAR (12)) SQL ошибка компиляции: строка ошибки 2 в позиции 18 Недопустимые типы аргументов для функции 'GET': (VARCHAR (16777216), VARCHAR (12))

Я могу запросить содержимое файла JSON на этапе, используя следующий запрос:

выберите $ 1 из @ sf_tut_stage / sample.json;

Что я делаю не так?

Я также попытался добавить следующее в оператор копирования: file_format = (format_name = SF_TUT_CSV_FORMAT)); но не повезло.

Как правильно написать это утверждение, чтобы оно могло загружать элементы в пределах $ 1 в отдельные столбцы реляционной таблицы.

спасибо

Ответы [ 2 ]

1 голос
/ 11 января 2020

Ваш код пытается использовать синтаксис : для извлечения значения из источника, но это все еще просто varchar, который не допускает этот синтаксис. Попробуйте это с помощью PARSE_ JSON, чтобы SnowFlake знал, что это JSON, и может соответствующим образом применить этот синтаксис.

copy into TEST."PUBLIC".REQUESTS(REQUESTREFID, REQUESTID, FIRSTNAME, LASTNAME, EMAIL, PHONE, EMAILVALIDATION, PHONEVALIDATION, IDVALIDATION, MESSAGE, CHANNEL)
from (
    select
        PARSE_JSON($1):requestRefid,
        PARSE_JSON($1):requestid,
        PARSE_JSON($1):firstName,
        PARSE_JSON($1):lastName,
        PARSE_JSON($1):email,
        PARSE_JSON($1):phone,
        PARSE_JSON($1):emailValidation,
        PARSE_JSON($1):phoneValidation,
        PARSE_JSON($1):idValidation,
        PARSE_JSON($1):message,
        PARSE_JSON($1):channel
    from @sf_tut_stage/sample.json t
 ); 
0 голосов
/ 11 января 2020

Вот способ загрузки JSON данных в реляционную таблицу. https://docs.snowflake.net/manuals/user-guide/script-data-load-transform-json.html

Вам необходимо использовать метод parse_ json ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...