postgres的COPY函数是否支持utf 16编码的文件?

Does the postgres COPY function support utf 16 encoded files?

我正在尝试使用 postgreSQL COPY 函数将 UTF 16 编码的 csv 插入 table。但是,当 运行 执行以下查询时:

COPY temp 
FROM 'C:\folder\some_file.csv' 
WITH (
    DELIMITER E'\t', 
    FORMAT csv, 
    HEADER);

我收到以下错误:

ERROR:  invalid byte sequence for encoding "UTF8": 0xff
CONTEXT:  COPY temp, line 1
SQL state: 22021

当我 运行 相同的查询,但将编码设置 Encoding 'UTF-16'Encoding 'UTF 16' 添加到 with 块时,我得到以下错误:

ERROR:  argument to option "encoding" must be a valid encoding name
LINE 13:  ENCODING 'UTF 16' );
          ^
SQL state: 22023
Character: 377

我查看了 postgres 文档试图找到正确的编码,但没有找到任何东西。这是因为复制功能不支持UTF 16编码的文件吗?我本以为这几乎肯定是可能的!

我是 运行ning postgres 12,在 windows 10 pro

任何帮助将不胜感激!

不,你不能那样做。

UTF-16 不在 list of supported encodings.
PostgreSQL 永远不会支持不是 ASCII 扩展的编码。
您必须将文件转换为 UTF-8。