【问题标题】:Getting same value for all records in snowflake为雪花中的所有记录获取相同的值
【发布时间】:2022-01-07 04:36:54
【问题描述】:

我有 key_value 表和 key 表。我必须只从 key_value 表中加载键并使用雪花过程插入到键表中。我写了下面的代码。执行后,我在键表中得到相同的键值,而不是所有键。

create or replace procedure proc_key_load()
returns varchar
language javascript
as
$$
 var query=`select key from key_value`;
 var ret=snowflake.createStatement( {sqlText: query}).execute();
 var length=ret.getRowCount();
 var counter=0;
 while(counter<length){
 ret.next();
 var value=ret.getColumnValue(1);
 var load_query=`insert into key_load values(` + value +`)`;
 var ret=snowflake.createStatement( {sqlText: load_query}).execute();
 counter += 1;
 }
 return 'SUCCESS';
$$

【问题讨论】:

    标签: snowflake-cloud-data-platform procedure


    【解决方案1】:

    我没有测试它,但我看到你在循环中重新定义了“ret”。尝试分配不同的变量:

    create or replace procedure proc_key_load()
    returns varchar
    language javascript
    as
    $$
     var query=`select key from key_value`;
     var ret=snowflake.createStatement( {sqlText: query}).execute();
     var length=ret.getRowCount();
     var counter=0;
     while(counter<length){
     ret.next();
     var value=ret.getColumnValue(1);
     var load_query=`insert into key_load values(` + value +`)`;
     var ret2 = snowflake.createStatement( {sqlText: load_query}).execute();
     counter += 1;
     }
     return 'SUCCESS';
    $$
    

    更新:我测试了上面的代码,它可以工作。如果您只需要将一些数据从一个表复制到另一个表,您可以使用普通 SQL 对吗?比如:

    INSERT INTO key_load SELECT key FROM key_value;
    

    不管怎样,如果你真的需要使用上面的程序,你可以用更高效的方式来写:

    create or replace procedure proc_key_load()
    returns varchar
    language javascript
    as
    $$
     var query=`select key from key_value`;
     var ret=snowflake.createStatement( {sqlText: query}).execute();
     while(ret.next()){
       var value=ret.getColumnValue(1);
       var load_query=`insert into key_load values(?)`;
       snowflake.createStatement( {sqlText: load_query, binds:[value]  }).execute();
     }
     return 'SUCCESS';
    $$;
    

    【讨论】:

    • 谢谢你成功了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 2021-02-06
    相关资源
    最近更新 更多