在 JPA 中使用 LATIN1 客户端编码执行 PostgreSQL 函数

朱利安·大卫

我在 PostgreSQL 数据库中有一个函数,它在服务器中搜索一个普通的 txt 文件并处理文件中的数据。SQL 函数将客户端编码更改为LATIN1由于上传的文件格式 ( SET client_encoding ='LATIN1';)。当我在本地(使用 PgAdmin)执行该函数时,它可以工作,但是当我使用 JPA Native Query 执行该函数时,出现此错误:

Internal Exception: org.postgresql.util.PSQLException: The server's client_encoding parameter was changed to LATIN1. The JDBC driver requires client_encoding to be UTF8 for correct operation.

这是我的 JPA 函数:

public boolean importFile() {
    boolean res = false;

    try {
        getEntityManager().getTransaction().begin();
        getEntityManager().createNativeQuery("SELECT import()").executeUpdate();
        getEntityManager().getTransaction().commit();
        res = true;

    } catch (Exception e) {
        e.printStackTrace();
        getEntityManager().getTransaction().rollback();
        System.err.println("Error: " + e.getMessage());
    }

    return res;
}

如果重要的话,我正在使用 EclipseLink(JPA 2.1)、JSF 2.2 (PrimeFaces 6.1)、PostgreSQL 9.5.8。

尼克·巴恩斯

如果要在client_encoding函数调用期间更改设置而不影响会话状态,可以SET在函数本身附加一个子句:

CREATE FUNCTION import() RETURNS void
SET client_encoding = 'LATIN1'
AS ...

虽然如果您的函数是通过 加载文件COPY,则无需更改您的client_encoding设置;您可以在COPY命令本身中指定文件编码

COPY my_table
FROM '/path/to/my_file'
ENCODING 'LATIN1'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MySQL函数将使用Latin1编码的文本字段转换为UTF8

强制Postgres使用UTF8编码而不是LATIN1进行安装?

MYSQL数据库编码,混合使用latin1和utf-8

无法使用 d3.dsv 读取“latin1”编码文件的重音符号

在C ++函数中使用MQTT客户端指针

编码和解码UTF-8和latin1

与latin1和uft-8兼容的编码?

如何在 jpa nativequery 中执行 postgresql json 函数查询?

在@Query JPA Postgresql中使用WITH子句

VM正在使用latin1的本机名称编码运行,这可能会导致Elixir如预期的那样发生故障

是否可以在 JPA 中使用窗口函数?

如何在 postgresql 中使用 age() 函数

在Postgresql函数中使用返回状态

在 OrmLite 中使用 PostgreSQL 聚合函数

PostgreSQL:无法在UPDATE中使用聚合函数

在 PostgreSQL 函数中使用递归查询

在嵌套的postgresql函数中使用父变量?

PostgreSQL:使用JDBC跳过SQL客户端中的错误

如何在Sharepoint 2013客户端对象模型中使用javascript getPeerUrl()函数?

Javascript->下载以ISO-8859-1 / Latin1 / Windows-1252编码的CSV文件

PostgreSQL-在我的函数中使用执行语句无法显示我的表

如何为Javascript客户端使用构造函数

使用参数调用 Testcafe 客户端函数

PHP使用客户端证书调用Soap函数

如何将默认的UTF-8编码更改为LATIN1

所选的LC_CTYPE设置需要编码为“ LATIN1”

在 R 中将默认 html 编码转换为 UTF-8 或 latin1

R数据表搜索选项不处理外来编码(latin1)

在PostgreSQL和JPA / Hibernate中使用Point类型