跳过导致PostgreSQL复制命令错误的行

时间:2015-03-11 16:16:00

标签: sql postgresql postgis

尝试从csv文件复制数据时出现UTF编码错误

Error invalid by sequence for encoding...
SQL State: 22021 
Context Copy mydatabase line 165

我想知道是否可以跳过引发错误的行。我知道可以使用header命令跳过第一行,但我获得的行不在第一行。我想在Postgres中找到一个解决方案,而不是让我进入另一个程序的解决方案。

2 个答案:

答案 0 :(得分:1)

不幸的是,that functionality hasn't been integrated into PostgreSQL。我所知道的最快的解决方法是使用sed过滤掉错误的输入行。如果你真的必须保持基于PostgreSQL的解决方案,我知道除了使用PL / pgsql或其他过程语言接口来读取数据之外别无选择。

答案 1 :(得分:1)

您可以使用PGLoader,这是PostgreSQL的数据加载工具。 COPY命令是单个事务,因此所有数据都将被导入,或者都不导入。 PGLoader具有事务行为,它将保留一个单独的拒绝数据文件,但将继续尝试在数据库中复制良好的数据。

在此存储库: https://github.com/dimitri/pgloader