如何在 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 关键字