(Отправка вопроса от имени пользователя Snowflake)
Участник сообщества Snowflake порекомендовал следующее:
Ниже приведен пример использования snowsql. В скрипте test.sql есть две переменные, которые во время выполнения заменяются следующей командой snowsql.
команда:
snowsql -c myconn -w trainingwh --variable dt=01-AUG-2018 --variable file=test.txt -f test.sql -o variable_substitution=True
script test.sql
copy into @unloadstage/&file from (select * from tab where dt = to_Date('&dt','DD-MON-YYYY'));
Пользователь ответил:
Я использую сохраненный процесс, мой оператор выбора работает, но не с командой копирования, у меня есть>закомментировал, что строка
создает или заменяет процедуру sy_sp_test9 ()
возвращает строку
язык javascript
как
$$
var counter = 0;
var cid=300000433715649;
var dt_stmt = snowflake.createStatement({ sqlText:`select year( dateadd('d',-30,mdate))||'-'||
lpad(month(dateadd('d',-30,mdate)),2,'0')||'-'||
lpad(day( dateadd('d',30,mdate)),2,'0')
from(select max(crtn_dt)mdate from ATT_MDP_DB.STANDARDIZED.cdm_campaigns) `});
var cpdt=dt_stmt.execute();
cpdt.next()
var pyear= cpdt.getColumnValue(1);
var my_sql_qry_stmt = snowflake.createStatement({
sqlText: `SELECT count(*) FROM ATT_MDP_DB.STANDARDIZED.cdm_campaigns
WHERE CRTN_DT>:1;`,
binds: [pyear]
});
var rec_count = my_sql_qry_stmt .execute();
rec_count.next()
//bind variable works fine here
var v_rec_count = rec_count.getColumnValue(1);
testfile_name="CAMP9_";
var my_where_stmt=" from (select * from ATT_MDP_DB.STANDARDIZED.cdm_campaigns w) overwrite=true;";
// var my_where_stmt=" from (`select * from ATT_MDP_DB.STANDARDIZED.cdm_campaigns where //crtn_dt>=:1;`,binds:[pyear])"; ---The above commend line does not work
var my_stage_cmd="copy into @ATT_MDP_USER_DB.ASPEN.ASPEN_S3_STAGE/";
my_stage_cmd += testfile_name;
my_stage_cmd+=my_where_stmt;
var statement1 = snowflake.createStatement( {sqlText: my_stage_cmd });
var result_set1 = statement1.execute();
return my_stage_cmd;
$$
Мы ценим любые идеи, помощь или другие обходные пути, которые сообщество может порекомендовать. Спасибо!