我正在通过JAVA程序构建器运行此命令
plpgsql = "\"path_to_psql_executable\psql.exe" -U myuser -w -h myhost -d mydb -a -f "some_path\copy_7133.sql" 2> "log_path\plsql_7133.log\"";
ProcessBuilder pb = new ProcessBuilder("C:\\Windows\\System32\\cmd.exe", "/c", plpgsql);
Process p = pb.start();
p.getOutputStream().close();
p.waitFor();
这回复了以下错误:
错误:编码的字节序列无效" UTF8":0xbd语境:COPY copy_7133,第4892行
问题是如果我在cmd中手动运行SQL命令,那么它正在成功复制所有数据,从而为我插入了行数。无法找出原因
注意:代码仅对一个特定文件造成问题,因为其余工作正常。
修改: 正在运行的复制命令:
\copy s_m_asset_7140 FROM 'C:\ER\ETL\Unzip_7140\asset.csv' csv HEADER QUOTE '"' ENCODING 'UTF8';
命令给出的最后一个错误:
psql:C:/ER/ETL/Unzip_7140/copy_s_m_asset_7140.sql:1:错误:无效 用于编码的字节序列" UTF8":0xa0语境:COPY s_m_asset_7140, 第10282行
但除了' - '之外,似乎没有任何特殊字符。不确定它无法阅读。
更多细节abt DB: show client_encoding; " UNICODE"
show server_encoding; " UTF8"
答案 0 :(得分:0)
的工作。但仍然不明白为什么UTF8不起作用。 我将编码更改为LATIN1并且工作正常
\copy s_m_asset_7140 FROM 'C:\ER\ETL\Unzip_7140\asset.csv' csv HEADER QUOTE '"' ENCODING 'LATIN1';
有人可以解释为什么UTF8不起作用吗?