PostgresqlpgAdmin 4-如何在系统设置中将小数点分隔符从点更改为逗号

问题描述

在波兰,我们使用逗号代替小数点分隔符。我的整个数据库都使用逗号,当我想将数据导入postgrsql时出现此错误

错误:数字类型“ 0,000”的无效输入语法 内容copY表格1,第2行,栏销售量:“ 0,000” sql状态:22P02

如何更改Postgresql设置,使其接受逗号而不是点作为小数点分隔符?

解决方法

您必须更改配置参数lc_numeric。可以通过在数据库启动时或在sql中即时配置参数文件来实现(有关与参数交互的其他方式,请咨询相应的docs' section)。

要在整个集群中更改设置,请使用:

ALTER SYSTEM lc_numeric TO 'pl_PL.UTF-8'; -- Check the original setting first !!!

这对于一次性工作可能不是一个好主意(而且您可能仍然没有特权)。

以下步骤说明了如何在当前SQL事务的英美和波兰数字格式约定之间切换:

-- show the current setting. let's say it is 'en_US.UTF-8'. Remember/store for later.
show lc_numeric;

-- American style.
select to_char(123456789.8765,'999G999G999D99');

-- Set to Polish convention (group separator ' ',decimal: ',') 
set lc_numeric to 'pl_PL.UTF-8';

-- Polish style
select to_char(123456789.8765,'999G999G999D99');

-- Restore original value
set lc_numeric to 'en_US.UTF-8';

在Postgresql 12上进行了测试。文档SETLocale config中的更多详细信息。