在带有presto驱动程序的sql workbench/j上使用wbimport

在带有presto驱动程序的sql workbench/j上使用wbimport,sql,import,presto,sql-workbench-j,Sql,Import,Presto,Sql Workbench J,因此,我使用workbench将一个160k行的文本文件导入到一个表中,代码是: Wbimport -usepgcopy -type=text -endrow=164841 -file=‘book1.csv’ -table=it.table1 -delimiter=, -multiline=true 因此,我用一个160k行文件的3行版本尝试了这个方法,它在几秒钟内就完成了。这似乎只在自动提交模式下完成,当我尝试在完整的160k行文件上运行它时,需要200多小时才能完成任何原因或备选方案 我正

因此,我使用workbench将一个160k行的文本文件导入到一个表中,代码是:

Wbimport
-usepgcopy
-type=text
-endrow=164841
-file=‘book1.csv’
-table=it.table1
-delimiter=,
-multiline=true
因此,我用一个160k行文件的3行版本尝试了这个方法,它在几秒钟内就完成了。这似乎只在自动提交模式下完成,当我尝试在完整的160k行文件上运行它时,需要200多小时才能完成任何原因或备选方案

我正在使用workbench build 125和presto jdbc-0.216


感谢

最可能的原因是整个事务变得很大,这给wbimport和jdbc连接带来了太大的负载。如果将其分解为单独的导入(例如,每次导入1000条记录),则其工作速度可能会快得多


如果先将文件切割成多个文件,然后一次导入一个文件,也可以避免重复读取大文件以找到正确的记录。

Presto JDBC尚不支持批处理
INSERT
(请参阅)。另外,您要插入到哪个接头?如果您将Presto与PostgreSQL一起使用,您可以直接将数据加载到PostgreSQL,它有一些专门的工具来实现这一点。但是,您可以完全跳过INSERT。如果您使用S3(或HDFS)配置了eg Presto,只需将CSV文件放在某个位置,并将其作为外部表“映射”到Presto配置单元连接器中。您可以使用WbImport使用
-committevery=1000
,无需拆分文件