2017-10-13 61 views
1

我想從本地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

不能運行更新查詢以使3個空格在複製命令後爲空嗎? – WannaBeSQLExpert

+0

如果您按原樣嘗試,會出現錯誤嗎? –

+0

@WannaBeSqlExpert:我可以運行,但首先我想要在我的數字列中的3個空格數據。這是不是因爲 –

回答

1

根本不能在字符串中存儲字符串。 3個空格是一個字符串,因此它不能存儲在欄位pay中,因爲它被定義爲數字。

解決這個難題的常用方法是創建一個staging table,它在列定義中使用不太精確的數據類型。將源數據導入登臺表。然後處理這些數據,以便它可以可靠地添加到最終表格中。例如在staging table中設置一個名爲pay_str的列爲NULL,其中pay_str =''(或者LIKE'%')

相關問題