我想通過BTEQ將數據從平面文件移植到TD。 表定義爲:
Teradata:BTEQ導入無效日期問題
CREATE MULTISET TABLE _module_execution_log
(
system_id INTEGER,
process_id INTEGER,
module_id INTEGER,
julian_dt INTEGER,
referral_dt DATE FORMAT 'YYYY-MM-DD',
start_dt_tm TIMESTAMP(6),
end_dt_tm TIMESTAMP(6),
ref_s_cnt INTEGER,
ref_d_cnt INTEGER)
PRIMARY INDEX (module_id);
以下是我試圖在表中裝載2個樣品記錄:
USING
( system_id INTEGER
,process_id INTEGER
,module_id INTEGER
,julian_dt INTEGER
,referral_dt DATE FORMAT 'YYYY-MM-DD'
,start_dt_tm TIMESTAMP
,end_dt_tm TIMESTAMP
,ref_s_cnt INTEGER
,ref_d_cnt INTEGER
)
INSERT INTO _module_execution_log
( system_id
,process_id
,module_id
,julian_dt
,referral_dt
,start_dt_tm
,end_dt_tm
,ref_s_cnt
,ref_d_cnt
)
VALUES (
:system_id
,:process_id
,:module_id
,:julian_dt
,:referral_dt
,:start_dt_tm
,:end_dt_tm
,:ref_s_cnt
,:ref_d_cnt);
我得到了1|1|30|2007073|Mar 14 2007 12:00:00:000AM|Mar 15 2007 1:27:00:000PM|Mar 15 2007 1:41:08:686PM|0|0 1|1|26|2007073|Mar 14 2007 12:00:00:000AM|Mar 15 2007 1:27:00:000PM|Mar 15 2007 1:59:40:620PM|0|0
摘錄我BTEQ腳本進口時出現以下錯誤:
*** Failure 2665 Invalid date.
Statement# 1, Info =5
*** Failure 2665 Invalid date.
Statement# 1, Info =5
這個問題肯定與第5列中的導出日期有關。我無法修改導出查詢。
我試圖在BTEQ以下但仍然未能:cast(cast(substr(:referral_dt,1,11) as date format 'MMMBDDBYYYY') as date format 'YYYY-MM-DD')
嗨,謝謝你的回覆。我不在TD14上,所以排除了第二種選擇。我最初考慮的是referral_dt列。我想知道爲什麼不能子字符串函數工作,我可以選擇日期,因爲這是referral_dt所需的日期? – Allzhere
當然,你可以做一個子串來提取日期部分。對於時間戳,你需要做一個CASE plus SUBSTRINGs來添加缺少的0。 – dnoeth
嗨,我想將所有數據作爲varchar移植到TD上的臨時表中,然後在插入目標時對其進行格式化。這種方法給了我一個操場。感謝您的投入。欣賞它:) – Allzhere