Снежинка: Как вставить в таблицу из сплющенного массива переменных строки даты? - PullRequest
0 голосов
/ 08 октября 2019

Совершенно новый для Снежинки. Мне нужно вставить все даты из массива в поле даты в таблице. Я делаю это через хранимый Proc JavaScript.

//get the array of dates
datesMissingArr = priorDatesArr.filter(date=>summDateArr.indexOf(date)==-1);

datesMissingArr теперь равно этому: [ "2019-10-08", "2019-09-08", "2019-10-06" ]

Теперь я хочу взять это и вставитькаждая из этих дат в таблице, например так:

snowflake.createStatement( { sqlText: `INSERT INTO "MYDB"."PUBLIC"."dates_table"("logdate") 
                             SELECT value::date FROM TABLE(FLATTEN(input => parse_json('${datesMissingArr}')));`                                         
                            } ).execute();

Но я получаю ошибку:

Ошибка синтаксического анализа JSON: мусор в числовом литерале: 2019-10-08 ,, pos 11 At Statement.execute

Некоторые советы / помощь приветствуются.

Спасибо!

1 Ответ

1 голос
/ 08 октября 2019

Вам необходимо преобразовать массив в строку JSON перед вызовом execute():
var datesMissingStr = JSON.stringify(datesMissingArr);, а затем использовать ${datesMissingStr}.

Но на самом деле вы должны bind параметр:

snowflake.createStatement( { 
    sqlText: `INSERT INTO "dates_table"("logdate") 
              SELECT value::date FROM TABLE(FLATTEN(input => parse_json(:1)))`,
    binds:   [JSON.stringify(datesMissingArr)]
} ).execute();
...