Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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
Javascript 在snowflake中避免存储过程中的重复_Javascript_Sql_Stored Procedures_Snowflake Cloud Data Platform - Fatal编程技术网

Javascript 在snowflake中避免存储过程中的重复

Javascript 在snowflake中避免存储过程中的重复,javascript,sql,stored-procedures,snowflake-cloud-data-platform,Javascript,Sql,Stored Procedures,Snowflake Cloud Data Platform,我已经编写了一个存储过程来向表中插入值。但是当我两次调用存储过程时,重复的值被插入到表中。如何避免存储过程中的值重复 以下是我的存储过程: CREATE OR REPLACE PROCEDURE get_columns(TABLE_NAME VARCHAR) RETURNS ARRAY LANGUAGE JAVASCRIPT AS $$ var stmt = snowflake.createStatement({ sqlText: "SELECT * FROM " +

我已经编写了一个存储过程来向表中插入值。但是当我两次调用存储过程时,重复的值被插入到表中。如何避免存储过程中的值重复

以下是我的存储过程:

CREATE OR REPLACE PROCEDURE get_columns(TABLE_NAME VARCHAR)
RETURNS ARRAY
LANGUAGE JAVASCRIPT
AS
$$
var stmt = snowflake.createStatement({
    sqlText: "SELECT * FROM " + TABLE_NAME + " LIMIT 1;",    
});
stmt.execute();

var cols=[];
for (i = 1; i <= stmt.getColumnCount(); i++) {
  INSERT INTO TABLE1 (Col_Name) VALUES ('+"stmt.getColumnName(i)"+');  //DUPLICATE VALUES
}
return cols
$$;
编辑:

我正在检索Col_表的列名,比如Col1、Col2、Col3,我想将这些列名放入表1中

我调用了过程调用get_columnscoll_table,并将列名插入到表1中


当我再次调用过程调用get_columnscoll_table时,TABLE1将有重复的值,如Col1、Col2、Col3、Col1、Col2、Col3。我希望通过使用合并或更新或任何其他方法避免重复。

基于编辑的问题和评论:

当我再次调用过程[…]时,表1将有重复的值[…]。我想通过使用合并或更新或任何其他方法避免重复 当我在两个不同的表列上调用该过程时,INSERT OVERWRITE正在替换表中的行 然后,如果不想在现有表中插入重复值,可以执行以下操作:

在表1中插入COL_名称 挑选* 从中选择“i”x 其中x不在表1中,选择Col_名称; 替换过程中的SQL代码,您将不会看到重复的值。替换要插入的值的“i”


作为一般性意见:我不确定问题中的程序是否是解决总体问题的最有效方法,但这将解决重复行的具体问题

您能给我们提供示例输入和最终结果吗?获取专栏的目的是什么?@FelipeHoffa你能看一下我的编辑吗?你提前知道专栏的数量吗?是否有有效的标识符来检查记录是否唯一?@Sujitmohanty30我事先不知道列数。没有有效的标识符来检查记录是否唯一。我希望在插入时避免重复。@R0bert我的回答是希望插入只发生一次。但您的目标是在不同的表上多次调用此方法,并且只使用不同的列名?我不想将内容覆盖到表中,但在附加到目标表之前,我想检查是否存在具有相同值的行。。如果该行不存在,则我希望插入到表中,否则不存在。当我在两个不同的表列上调用该过程以获取答案时,插入覆盖正在替换表中的行。但我想知道是否有任何优化方法来解决此问题,因为如果一个表包含数百万行,则需要很长时间才能完成ComputeNanding:在这种情况下,为什么您希望有一个具有数百万行的表?您会有数百万个不同的表列名吗?