存储过程中的雪花'get'语句不起作用



问题语句:雪花'get'语句在雪花存储过程中不起作用。

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;
$$;

直到周二凌晨一切似乎都正常。get语句在snowsql中起作用,但在存储过程中不起作用。

想法,并提前感谢你。

-ibby

我认为您不能在存储过程中执行GET语句。你会要求Snowflake联系一个客户,并将文件移动到该客户。Snowflake VWH如何知道客户在哪里做这件事?

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

https://docs.snowflake.com/en/sql-reference/external-functions.html

最新更新