Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Snowflake cloud data platform 雪花';获取';存储过程中的语句不工作_Snowflake Cloud Data Platform_Java Stored Procedures - Fatal编程技术网

Snowflake cloud data platform 雪花';获取';存储过程中的语句不工作

Snowflake cloud data platform 雪花';获取';存储过程中的语句不工作,snowflake-cloud-data-platform,java-stored-procedures,Snowflake Cloud Data Platform,Java Stored Procedures,问题陈述:snowflake“get”语句在snowflake存储过程中不起作用 CREATE OR REPLACE PROCEDURE SP_UNLOAD_DYNAMIC("prefix" varchar) RETURNS varchar(1000) LANGUAGE JAVASCRIPT EXECUTE AS CALLER AS $$ var result = ""; try {

问题陈述:snowflake“get”语句在snowflake存储过程中不起作用

CREATE OR REPLACE PROCEDURE SP_UNLOAD_DYNAMIC("prefix" varchar)
    RETURNS varchar(1000)
    LANGUAGE JAVASCRIPT
    EXECUTE AS CALLER
    AS
    $$
    var result  = "";

    try {
            
        var sql00   = "select concat('" + prefix + "', to_char(ts,'yyyymmddhh24miss'),'.txt') from ts";
        var stmt00  = snowflake.execute({ sqlText:sql00 });
        stmt00.next();
        var rs = stmt00.getColumnValue(1);
        
        var sql01   = "copy into @my_unload_stage/unload/" + rs + " from tmp_dedupe header=false single=true max_file_size=4900000000 overwrite=true;"
        var stmt01  = snowflake.execute({ sqlText:sql01 });
        stmt01.next();
           
        var sql02   = 'get @my_unload_stage file://D:\\project_x\\OutputFiles_STG\\';        
        var stmt02  =  snowflake.execute({ sqlText:sql02 });
        stmt02.next();
        
        result = rs;
        
    }
     
    catch (err)  {
        result =  "Failed: Code: " + err.code + "\n  State: " + err.state;
        result += "\n  Message: " + err.message;
        result += "\nStack Trace:\n" + err.stackTraceTxt; 
    }
     
    return result;
    $$;
在stmt02之前,一切似乎都正常。get语句在snowsql中工作,但在存储过程中不工作

CREATE OR REPLACE PROCEDURE SP_UNLOAD_DYNAMIC("prefix" varchar)
    RETURNS varchar(1000)
    LANGUAGE JAVASCRIPT
    EXECUTE AS CALLER
    AS
    $$
    var result  = "";

    try {
            
        var sql00   = "select concat('" + prefix + "', to_char(ts,'yyyymmddhh24miss'),'.txt') from ts";
        var stmt00  = snowflake.execute({ sqlText:sql00 });
        stmt00.next();
        var rs = stmt00.getColumnValue(1);
        
        var sql01   = "copy into @my_unload_stage/unload/" + rs + " from tmp_dedupe header=false single=true max_file_size=4900000000 overwrite=true;"
        var stmt01  = snowflake.execute({ sqlText:sql01 });
        stmt01.next();
           
        var sql02   = 'get @my_unload_stage file://D:\\project_x\\OutputFiles_STG\\';        
        var stmt02  =  snowflake.execute({ sqlText:sql02 });
        stmt02.next();
        
        result = rs;
        
    }
     
    catch (err)  {
        result =  "Failed: Code: " + err.code + "\n  State: " + err.state;
        result += "\n  Message: " + err.message;
        result += "\nStack Trace:\n" + err.stackTraceTxt; 
    }
     
    return result;
    $$;
想一想,提前谢谢你


-ibby

我认为不能从存储过程中执行
GET
语句。您可能会要求Snowflake联系客户机并将文件移动到该客户机。雪片大众汽车公司如何知道客户在哪里这样做

为了完成您正在做的事情,我相信您需要创建一个外部应用程序,该应用程序利用一个雪花连接器,如Python、JDBC、ODBC等,这些连接器支持
GET
,然后可能在Lambda或Azure函数中公开。然后,可以从Snowflake存储过程中通过Snowflake外部函数调用该API


您收到的错误消息是什么?文件是否已填充,即get语句是否失败或“stmt02.next();”是否失败?这是“get”语句。当我检查雪花查询日志时,它显示已处理。绿色check.ok-那么错误消息是什么?使用snowsql时,“get”语句起作用,所以我认为连接器信息是通过某种方式传递的。最终目标是将本地驱动器的get语句替换为s3存储桶。您肯定需要从存储过程外部执行此操作。无论该方法是什么……就像API那样……您可以使用外部函数从SP调用它,但也可能需要它与SP完全分离。例如,如果您是从SnowSQL调用SP,则可以执行SP,然后作为单独的步骤执行GET。