【发布时间】:2022-01-16 00:08:05
【问题描述】:
我在使用 PostgreSQL 14 时遇到以下问题 在具有最新更新的 Windows 10 上。
我需要在下表中插入值。
CREATE TABLE StateList (
ID int GENERATED ALWAYS AS IDENTITY,
State_Number int NOT NULL,
ElectionGroup_ID INT NOT NULL,
Election_Number int NOT NULL,
UNIQUE (State_Number, ElectionGroup_ID, Election_Number),
PRIMARY KEY (ID)
);
我要执行以下命令:
COPY StateList(Election_Number, State_Number, ElectionGroup_ID )
FROM '...\csvFileStateLists19.csv'
WITH (
FORMAT CSV,
DELIMITER ','
);
“csvFileStateLists19”是
"19","9","4"
"19","5","238"
"19","5","21"
"19","15","1"
"19","5","10"
它适用于另一个使用字符串和整数的表。 但在这里我总是得到:
错误: FEHLER: ungültige Eingabesyntax für Typ integer: »19« 上下文:COPY statelist,Zeile 1,Spalte 选举号码:»19«
SQL 状态:22P02
这通常表示数字是空字符串或实际上不是数字。但它不是! 19岁了,为什么不行?
我在java中生成了文件, 它的 utf8 编码, 数据库是“German_Germany.1252”
显示客户端编码; => 统一码 显示服务器编码; => UTF8 选择 pg_encoding_to_char(encoding) 从 pg_database WHERE datname = 'database1'; => UTF8
select pg_encoding_to_char(encoding), datcollate, datctype from pg_database where datname = 'database1';
返回 "UTF8" "German_Germany.1252" "German_Germany.1252"
感谢您的帮助!
【问题讨论】:
-
CSV 文件来自哪里?它的编码是什么?数据库的编码是什么?添加答案以更新您的问题。
-
我用java生成了文件,它的utf8编码,数据库是……默认的?我认为 utf8
-
在
psql做show lc_ctype ;。 -
在
psql\encoding返回什么? -
UTF8 当我做 SHOW SERVER_ENCODING;
标签: sql postgresql csv