2016-11-24 72 views
0

將文本轉換爲日期我在讀從固定長度的文本文件中的數據與下面的代碼在SQL裝載機

DATE       SYSDATE, 
NAME       position(9:38), 
SCORE       position(39,41) 

現在我想直接加載文本日期。示例僅引用來自csv文件的輸入。請幫助。在這種情況下,輸入也可以是空字符串,我想用SYSDATE替換它。

示例文件內容

11112016SachinTendulkar    110 
12122016SachinTendulkar    101 
     RahulDravid     120 

輸入日期格式將是DDMMYYYY

+0

?? ??你的問題背後是否有「密碼」,只有發起的需要回答?你在檔案中有什麼文字?它是什麼樣子的?我假設你不是想把字符串「position(30:40)」轉換成日期,是嗎?如果沒有,你想轉換成日期? – mathguy

+0

沒有什麼是祕密@mathguy,我會添加更多的細節。感謝您詢問更多信息 – Anandhakrishnan

+0

那麼,日期是在每個新行的1-8位?你說的日期也可能是「空」,在這種情況下,你想輸入SYSDATE(你可能意思是沒有時間,所以實際上是TRUNC(SYSDATE));輸入文件中的外觀如何?具體來說,這種情況下的名字是從位置1還是位置9開始? (大概仍然在9號位置,否則這不是一個「固定長度」的文本文件,但是......只是確保。) – mathguy

回答

1

請把你的日期列的東西,除了「日期」更具描述性的,因爲這是一個Oracle的保留字。我將它稱爲l​​oad_date。您的控制文件條目將如下所示。使用NVL2功能。如果load_date不爲空,請將其轉換爲日期。如果它爲空,則使用sysdate。

load_date position(1:8) "nvl2(:load_date, to_date(:load_date, 'ddmmyyyy'), trunc(sysdate))"