我想从我的本地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是我表中的一个列,其数据类型为数字。
这是正确的还是可行的?
答案 0 :(得分:1)
您根本无法在字符串中存储字符串。 3个空格是一个字符串,因此它不能存储在pay
列中,因为它被定义为数字。
解决这个难题的一个常见方法是创建一个staging table
,它在列定义中使用不太精确的数据类型。将源数据导入登台表。然后处理该数据,以便可以将其可靠地添加到最终表中。例如在staging table
中将名为pay_str
的列设置为NULL,其中pay_str
=' ' (或者也许是喜欢'%')