使用GeoKettle将行插入PostgreSQL数据库的最快方法是什么?

使用GeoKettle将行插入PostgreSQL数据库的最快方法是什么?,postgresql,csv,insert,pentaho,kettle,Postgresql,Csv,Insert,Pentaho,Kettle,假设我有一个.csv文件,有1亿行。我将该csv文件导入pentaho Kettle,并希望将所有行写入PostgreSQL数据库。什么是最快的插入转换?我尝试过普通的表输出转换和PostgreSQL批量加载程序(比表输出快得多)。但还是太慢了。有没有比使用PostgreSQL批量加载程序更快的方法 考虑到PostgreSQL批量加载程序运行的是从STDIN复制表名这一事实,postgres中的数据加载速度再快不过了。多值插入速度较慢,但多值插入速度最慢。所以你不能让它更快 要加速复制,您可以:

假设我有一个.csv文件,有1亿行。我将该csv文件导入pentaho Kettle,并希望将所有行写入PostgreSQL数据库。什么是最快的插入转换?我尝试过普通的表输出转换和PostgreSQL批量加载程序(比表输出快得多)。但还是太慢了。有没有比使用PostgreSQL批量加载程序更快的方法

考虑到PostgreSQL批量加载程序运行的是从STDIN复制表名这一事实,postgres中的数据加载速度再快不过了。多值插入速度较慢,但多值插入速度最慢。所以你不能让它更快

要加速
复制
,您可以:

set commit_delay to 100000;
set synchronous_commit to off;
以及其他服务器端技巧(如加载前删除索引)

注意:

更新

同步提交(枚举)

指定事务提交是否将等待WAL记录被提交 在命令返回“成功”指示之前写入磁盘 客户。有效值为打开、远程应用、远程写入、本地、, 然后离开。默认的安全设置为on。当关闭时,可能会出现 向客户端报告成功与 事务在服务器崩溃时确实是安全的。 (最大延迟是wal_writer_延迟的三倍。)与fsync不同, 将此参数设置为off不会产生任何数据库损坏的风险 不一致:操作系统或数据库崩溃可能导致 最近一些据称已提交的交易丢失,但 数据库状态将与那些事务被删除时的状态相同 干净利落地流产了。因此,关闭同步提交可能是一个有用的方法 性能比确切确定性更重要时的替代方案 关于事务的持久性

(强调矿山)


另外请注意,我建议对会话级别使用
SET
,因此,如果Geockett不允许在postgres上运行命令之前设置配置,您可以对特定的用户/数据库对使用
connect\u query
,或者考虑其他一些技巧。如果您无法对每个会话设置
同步\u提交
,并且您决定对每个数据库或用户进行更改(因此,它将应用于Geockettle连接,在加载结束后,不要忘记将其设置回
on

考虑到PostgreSQL批量加载程序从STDIN运行
COPY table\u name
-在postgres中加载数据不会更快。多值插入将更慢,只是多个插入将最慢。因此,您需要不能再快了

要加速
复制
,您可以:

set commit_delay to 100000;
set synchronous_commit to off;
以及其他服务器端技巧(如加载前删除索引)

注意:

更新

同步提交(枚举)

指定事务提交是否将等待WAL记录被提交 在命令返回“成功”指示之前写入磁盘 客户端。有效值为on、remote\u apply、remote\u write、local、, 和关闭。默认的安全设置为打开。关闭时,可以 向客户端报告成功与 事务在服务器崩溃时确实是安全的。 (最大延迟是wal_writer_延迟的三倍。)与fsync不同, 将此参数设置为off不会产生任何数据库损坏的风险 不一致:操作系统或数据库崩溃可能导致 最近一些据称已提交的交易丢失,但 数据库状态将与那些事务被删除时的状态相同 因此,关闭同步提交可能是一个有用的方法 性能比确切确定性更重要时的替代方案 关于事务的持久性

(强调矿山)


另外请注意,我建议对会话级别使用
SET
,因此,如果Geockett不允许在postgres上运行命令之前设置配置,您可以对特定的用户/数据库对使用
connect\u query
,或者考虑其他一些技巧。如果您无法对每个会话设置
synchronous\u commit
,您可以决定按数据库或用户更改它(因此,它将应用于GeoKettle连接,在加载结束后不要忘记将其设置回
on

如果您要建议更改
同步提交
,您应该真正解释所涉及的风险…@NickBarnes感谢您的评论-更新了通知单,并给出警告,如果您要更改,请提供一些选项。)要推荐更改诸如
synchronous\u commit
,您应该真正解释所涉及的风险…@NickBarnes感谢您的评论-更新了带有警告和其他选项的通知单