批量插入时遇到问题。我正在尝试从编码LATIN1的文件批量插入到包含UTF8编码的数据库的表中。
invalid byte sequence for encoding "UTF8": 0xc33f
当我执行SET CLIENT_ENCODING ='LATIN1'并从控制台执行COPY后,它可以正常工作。但是JDBC说我不能做SET CLIENT_ENCODING。
拜托,您能否建议解决我如何解决问题的方法。谢谢!
答案 0 :(得分:4)
尝试将allowEncodingChanges
连接参数设置为true以允许(暂时)将客户端编码更改为LATIN1。根据{{3}},PostgreSQL应该处理LATIN1(客户端)和UTF8(服务器)之间的自动字符集转换。
client_encoding设置由 司机,不应该改变。 如果驱动程序检测到更改,它将会 中止连接。 有一个 此行为的合法异常 但是,使用COPY命令 驻留在服务器上的文件 文件系统。唯一的手段 指定此文件的编码 是通过改变client_encoding 设置。
仅在您需要时启用此功能 在何时覆盖客户端编码 做副本。