Postgresql 如何在数值列中将字符串空间存储为null

Postgresql 如何在数值列中将字符串空间存储为null,postgresql,Postgresql,我想从本地txt文件到postgresql表中获取记录 我已经创建了下表 创建表格播放器信息 ( 名称varchar(20), 城市瓦查尔(30岁), 州瓦查尔(30), 日期, 支付数字(5), 标志字符 ) 并且,我的本地txt文件包含以下数据 约翰|孟买| 20170203 | 55555 | Y 大卫|孟买| 20170305 | N 罗姆西|孟买| 20170405 | 55555 | N 戈特里|孟买| 20170708 | Y 我只是在执行这个 复制玩家信息(姓名, 城市 国

我想从本地txt文件到postgresql表中获取记录

我已经创建了下表


创建表格播放器信息
(
名称varchar(20),
城市瓦查尔(30岁),
州瓦查尔(30),
日期,
支付数字(5),
标志字符
)

并且,我的本地txt文件包含以下数据


约翰|孟买| 20170203 | 55555 | Y
大卫|孟买| 20170305 | N
罗姆西|孟买| 20170405 | 55555 | N
戈特里|孟买| 20170708 | Y

我只是在执行这个


复制玩家信息(姓名,
城市
国家,,
日期:,
支付id,
(国旗)
从本地“D:\sample\u player\u info.txt”
分隔符“|”空为“”
例外情况“D:\Logs\player\u info”

我想要的是, 对于我的数字列,如果有3个空格, 然后我必须插入NULL作为pay-else任何5位数字

pay是我的表中数据类型为数字的列


这是正确的还是可能的?

您根本无法将字符串存储在数字列中。3空格是字符串,因此不能存储在列
pay
中,因为该列定义为数字


解决这个难题的一种常见方法是创建一个
暂存表
,它在列定义中使用不太精确的数据类型。将源数据导入临时表。然后处理该数据,以便能够可靠地将其添加到最终表中。e、 g.在
暂存表中
将名为
pay_str
的列设置为NULL,其中
pay_str
=''(或者类似“%”)

您不能在copy命令后运行更新查询以使3个空格变为null吗?如果按原样尝试,是否会出现错误?@WannaBeSqlExpert:我可以运行,但首先我希望在我的数字列中包含3个空格的数据。而不是像这样is@Andrew:是的,因为我有一个日志文件。。所以它显示了一个关于数字的错误。剩下的记录被插入到表中。我不明白你们想要数字列中有3个空格是什么意思。我建议使用awk或sed对txt文件进行预处理,以删除这三个空格。然后它将作为NULL导入,与NULL as子句匹配。(已经可以在状态列中使用了。)如果您想存储数字或空格,numeric不会这样做,但为什么要这样做?输出时始终可以将NULL转换为空格。