如何在数字列中将字符串空格存储为null

时间:2017-10-13 14:11:38

标签: postgresql

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

我创建了下表。

create table player_info ( Name varchar(20), City varchar(30), State varchar(30), DateOfTour date, pay numeric(5), flag char )

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

John|Mumbai| |20170203|55555|Y David|Mumbai| |20170305| |N Romcy|Mumbai| |20170405|55555|N Gotry|Mumbai| |20170708| |Y

我刚刚执行此操作,

copy player_info (Name, City, State, DateOfTour, pay_id, flag) from local 'D:\sample_player_info.txt' delimiter '|' null as '' exceptions 'D:\Logs\player_info'

我想要的是, 对于我的数字列,如果有3个空格, 然后我必须插入NULL作为支付其他任何5位数字。

pay是我表中的一个列,其数据类型为数字。

这是正确的还是可行的?

1 个答案:

答案 0 :(得分:1)

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

解决这个难题的一个常见方法是创建一个staging table,它在列定义中使用不太精确的数据类型。将源数据导入登台表。然后处理该数据,以便可以将其可靠地添加到最终表中。例如在staging table中将名为pay_str的列设置为NULL,其中pay_str =' ' (或者也许是喜欢'%')