如何在 SQL Workbench/J 上提高导入速度

Posted

技术标签:

【中文标题】如何在 SQL Workbench/J 上提高导入速度【英文标题】:How to improve import speed on SQL Workbench/J 【发布时间】:2018-06-04 08:14:24 【问题描述】:

尝试如下,但导入速度非常慢,速度为 3 行/秒

WbImport -file=c:/temp/_Cco_.txt
         -table=myschema.table1
         -filecolumns=warehouse_id,bin_id,cluster_name
         ---deleteTarget
         -batchSize=10000
         -commitBatch 

【问题讨论】:

您使用的是哪种 DBMS 产品和 JDBC 驱动程序?您是否可能通过慢速网络连接发送它? confidential 表上是否定义了许多索引?这三列的数据类型是什么? 关系型数据库,jdbc:redshift,具有良好带宽的仓库网络,“机密”仅包含 2 个索引,3 x varchar 数据类型。 【参考方案1】:

WbInsert 可以使用 Postgres JDBC 驱动程序的COPY API。

到use it,使用

WbImport -file=c:/temp/_Cco_.txt
         -usePgCopy
         -table=myschema.table1
         -filecolumns=warehouse_id,bin_id,cluster_name

在这种情况下,-batchSize-commitBatch 选项将被忽略,因此您应该删除它们。

SQL Workbench/J 将基本上使用COPY ... FROM STDIN 的等效项。这应该比常规的 INSERT 语句快得多。

这要求输入文件按照COPY命令的要求进行格式化。

【讨论】:

【参考方案2】:

WbImport 使用INSERT 加载数据。这是将数据加载到 Redshift 中的最糟糕方式。

您应该为此使用 COPY 命令,如 Redshift 文档中所述:

"We strongly recommend using the COPY command to load large amounts of data. Using individual INSERT statements to populate a table might be prohibitively slow."

【讨论】:

嘿,我不是这个 redshift 集群的所有者,所以我不能使用批量复制模式。寻找最佳替代方案。也许我会尝试另一个 ide,不需要使用 s3 权限。

以上是关于如何在 SQL Workbench/J 上提高导入速度的主要内容,如果未能解决你的问题,请参考以下文章

SQL Workbench/J:运行 SQL 文件

如何在 SQL Workbench/J 中配置 sql 查询快捷方式?

如何在 sql workbench / j 中添加计算列

如何在 SQL Workbench/J 中自定义 SQL 关键字

如何在 SQL Workbench/J 中更改活动的数据库连接?

无法使用 SQL Workbench/J 在 Amazon Redshift 中创建新用户