Snowflake cloud data platform 使用存储过程的表插入?

Snowflake cloud data platform 使用存储过程的表插入?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,提交一个雪花用户,希望获得额外的帮助 是否有其他方法可以更快地使用存储过程执行表插入? 我开始构建一个usp,目的是在一个表中插入大约一百万行的测试数据,以便进行负载测试 我进入了下面的这个阶段,并将迭代值设置为10000 这需要10分钟来迭代10000次,以便在每次迭代中向表中插入一个整数 是的-我使用的是XS数据仓库,但即使这是增加到最大值-这是一种减缓任何用途的方法 -建立一个测试表 CREATE OR REPLACE TABLE myTable ( myInt NUMERIC(18

提交一个雪花用户,希望获得额外的帮助

是否有其他方法可以更快地使用存储过程执行表插入? 我开始构建一个usp,目的是在一个表中插入大约一百万行的测试数据,以便进行负载测试

我进入了下面的这个阶段,并将迭代值设置为10000

这需要10分钟来迭代10000次,以便在每次迭代中向表中插入一个整数

是的-我使用的是XS数据仓库,但即使这是增加到最大值-这是一种减缓任何用途的方法

-建立一个测试表

CREATE OR REPLACE TABLE myTable
(
   myInt NUMERIC(18,0)
);
-使用while语句测试jsusp,目的是在表中插入多行以进行负载测试

CREATE OR REPLACE PROCEDURE usp_LoadTable_test()
RETURNS float
LANGUAGE javascript
EXECUTE AS OWNER
AS
$$
//set the number of iterations
   var maxLoops = 10;
//set the row Pointer
   var rowPointer = 1;
//set the Insert sql statement
   var sql_insert = 'INSERT INTO myTable VALUES(:1);';   
//Insert the fist Value
       sf_startInt = rowPointer + 1000;
       resultSet = snowflake.execute( {sqlText: sql_insert, binds: [sf_startInt] });
//Loop thorugh to insert all other values
   while (rowPointer < maxLoops)
   {
       rowPointer += 1;
       sf_startInt = rowPointer + 1000;
       resultSet = snowflake.execute( {sqlText: sql_insert, binds: [sf_startInt] });
   }

   return rowPointer;
$$;
CALL usp_LoadTable_test();
到目前为止,我收到了以下建议:

建议1

您可以做的一件事是使用包含1000行或更多行的进料器表,而不是插入。。。价值观,例如:

建议2

当执行一百万个单行插入时,会消耗一百万个微分区——每个16MB

16 TB的存储容量可能会出现在您的雪花账单上。。。正常表格在下降后至少保留7天

为了优化存储,您可以定义一个集群键并以升序加载表,每个块尽可能多地填充一个微分区

建议3

如果需要顺序整数,请使用工作速度非常快的数据生成函数:


还有其他想法吗?

几个星期前,雪花小屋也提出了这个问题。 考虑到你收到的答案,你是否仍然觉得没有答案,然后可能会暗示为什么


如果您只需要一个包含单列序列号的表,请使用上面第3节中的生成器。否则,如果您需要更多建议,请分享您的具体要求。

如果您有答案,请分享答案,我们可以在新的堆栈溢出空间中帮助彼此成长。我看到你非常热衷于帮助客户,谢谢你!
INSERT INTO myTable SELECT <some transformation of columns> FROM "feeder table"