Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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_Snowsql - Fatal编程技术网

Snowflake cloud data platform 雪花存储过程复制到临时表中

Snowflake cloud data platform 雪花存储过程复制到临时表中,snowflake-cloud-data-platform,java-stored-procedures,snowsql,Snowflake Cloud Data Platform,Java Stored Procedures,Snowsql,这个问题和雪花和雪花有关。也就是说,我试图在一个存储过程中创建一个临时表,然后从azure blob存储“复制到”这个临时表。 我手动执行了snow sql语句,它们工作正常。 语句1:创建临时表DB.TABLES.LINE\u DETAILS\u增量,如DB.TABLES.LINE\u DETAILS 报表2: COPY INTO DB.TABLES.LINE_DETAILS_INCREMENTAL FROM (SELECT * FROM @DB.BASE.Azure/S/LINE_DETAI

这个问题和雪花和雪花有关。也就是说,我试图在一个存储过程中创建一个临时表,然后从azure blob存储“复制到”这个临时表。 我手动执行了snow sql语句,它们工作正常。 语句1:创建临时表DB.TABLES.LINE\u DETAILS\u增量,如DB.TABLES.LINE\u DETAILS

报表2:

COPY INTO DB.TABLES.LINE_DETAILS_INCREMENTAL FROM (SELECT * FROM @DB.BASE.Azure/S/LINE_DETAILS_INCREMENTAL )
force = false file_format = (type = csv field_delimiter = '|' encoding = 'Windows 1252' skip_header = 0);
但当我将其封装到存储过程中并尝试运行它时,会出现错误:- JavaScript编译错误:未捕获语法错误:SP_DELETE_LINE_detaxes在'var insert_子句='处的意外标识符复制到DB.TABLES.LINE_detaxes_INCREMENTAL FROM SELECT*FROM@Feeds_DB.BASE.Azure/S/LINE_detaxes_INCREMENTAL force=true file_format=type=csv字段_分隔符='|编码='Windows1252'跳过头=0 On_错误=继续;第288位。 存储过程的代码为:-

CREATE or replace procedure  "DB"."TABLES"."SP_DELETE_INSERT_3DAYS_INTO_LINE_DETAILS"()
returns varchar(1000)
language javascript
as
$$
try{
var create_clause = 'CREATE TEMPORARY TABLE DB.TABLES.LINE_DETAILS_INCREMENTAL LIKE DB.TABLES.PS_TRANSACTION_LINE_DETAILS;'
        var create_stmt  = snowflake.createStatement({sqlText: create_clause});   
        var create_res = create_stmt.execute();
        
        var insert_clause = 'COPY INTO DB.TABLES.LINE_DETAILS_INCREMENTAL FROM (SELECT * FROM @Tableau_Feeds_DB.BASE_TABLES.JDAStagingAzure/POS/PS_TRANSACTION_LINE_DETAILS_INCREMENTAL ) force = true file_format = (type = csv field_delimiter = '|' encoding = 'Windows1252' skip_header = 0) On_error = continue;'
        var insert_stmt = snowflake.createStatement({sqlText: insert_clause});  
        var insert_res = insert_stmt.execute();
        var select_clause = 'select distinct TO_CHAR(TO_DATE(CREATE_DATE)) as CREATE_DATE from DB.TABLES.LINE_DETAILS_INCREMENTAL order by CREATE_DATE';
        var select_stmt  = snowflake.createStatement({sqlText: select_clause});
        var select_res   = select_stmt.execute();
 while (select_res.next()) 
            {
            date_ip = select_res.getColumnValue(1);
            var desc_user_sql  = `delete from DB.TABLES.LINE_DETAILS where TO_DATE(CREATE_DATE) = :1;`
            var desc_user_stmt  = snowflake.createStatement({sqlText: desc_user_sql, binds: [date_ip]});

            var desc_user_sql2  = `INSERT INTO DB.TABLES.PS_TRANSACTION_LINE_DETAILS select * from DB.TABLES.PS_TRANSACTION_LINE_DETAILS_INCREMENTAL where TO_DATE(CREATE_DATE) = :1;`
            var desc_user_stmt2  = snowflake.createStatement({sqlText: desc_user_sql2, binds: [date_ip]});

            try{
                       desc_user_stmt.execute();
                       desc_user_stmt2.execute();
                  }
               catch(err)
                  {
                   return "Error inserting records: " +err;
                  }              
            }
            return "Data has been insert in success!";
        }
        
        catch(err){
               return "Error whileselecting Roles : " +err;
        }
return 0;
$$

我认为这里的问题是,您使用单引号来开始/结束字符串,并且在字符串本身中使用单引号

例如,字符串中有以下短语:

encoding = 'Windows1252'
我建议用反斜杠将附加引号括起来,如下所示:

encoding = \'Windows1252\'
对所有附加引号执行此操作,您应该会没事


让我知道,如果你仍然面临问题后

我认为这里的问题是,您使用单引号来开始/结束字符串,并且在字符串本身中使用单引号

例如,字符串中有以下短语:

encoding = 'Windows1252'
我建议用反斜杠将附加引号括起来,如下所示:

encoding = \'Windows1252\'
对所有附加引号执行此操作,您应该会没事


让我知道,如果你仍然面临问题后

尝试更改单引号,如下所示

var insert_clause = `COPY INTO DB.TABLES.LINE_DETAILS_INCREMENTAL FROM (SELECT * FROM @Tableau_Feeds_DB.BASE_TABLES.JDAStagingAzure/POS/PS_TRANSACTION_LINE_DETAILS_INCREMENTAL ) force = true file_format = (type = csv field_delimiter = '|' encoding = 'Windows1252' skip_header = 0) On_error = continue;`

尝试更改单引号,如下所示

var insert_clause = `COPY INTO DB.TABLES.LINE_DETAILS_INCREMENTAL FROM (SELECT * FROM @Tableau_Feeds_DB.BASE_TABLES.JDAStagingAzure/POS/PS_TRANSACTION_LINE_DETAILS_INCREMENTAL ) force = true file_format = (type = csv field_delimiter = '|' encoding = 'Windows1252' skip_header = 0) On_error = continue;`

很高兴认识@Chris。谢谢你Iqra Ijaz的上述回答起了作用。但我相信,对于未来的案例,转义字符是很好的选择。我有很多从SQL server到snowflake的迁移过程。欢迎@junketsu。将字符串标识符更改为严重重音`当然也可以做到这一点,但请记住,如果代码中的任何字符串都包含严重重音,那么这些字符串也需要转义。太长,读不下去了总是转义任何可能中断字符串的字符,以便尽早了解@Chris。谢谢你Iqra Ijaz的上述回答起了作用。但我相信,对于未来的案例,转义字符是很好的选择。我有很多从SQL server到snowflake的迁移过程。欢迎@junketsu。将字符串标识符更改为严重重音`当然也可以做到这一点,但请记住,如果代码中的任何字符串都包含严重重音,那么这些字符串也需要转义。太长,读不下去了始终转义任何可能提前中断字符串的字符