我需要定期轉儲到表中的csv文件中有非常髒的數據。這個csv文件包含了前幾天的所有記錄(感謝第三方供應商!),但我滿足於讓唯一約束保持這些記錄不會重複。SQL Loader字段可以通過它相對於最後一個字段的位置來指定嗎?
但是,這些髒數據的性質使得nincompoops在數據本身中添加了額外的逗號,並且雙引號字段太難了(不要讓自己的第三方供應商疲於奔命)。所以,雖然理想記錄有7個字段,但其中一些字段最多可以記錄12個字段。
而外地我真的需要的是附加日期。它始終是第7場(除非是第8,9,10,11或12號)。
有沒有辦法指定這個列是最後一個字段?
該控制文件似乎允許字段逐個位置,但只適用於固定長度的記錄(字符45-68等)。有什麼方法可以直接告訴它「最後一個」並從中獲益?
注意:通過文檔挖掘並瞭解到我需要做的每件有趣/有用的事情都是不可能的,我已經知道了答案,但無論如何我必須問。
您是否可以選擇預處理文件,也許使用腳本將最後一個字段移動到行首? –
@AlexPoole我有這個選擇,我想。還嘮叨我的老闆,看看供應商是否可以解決這個問題。老實說,我不想通過這一系列不同的步驟,開始感覺自己已經更好了(即使我知道這是一個錯誤)。主要需要證實我所問的是不可能的。 –
假設最大效率不是一個主要問題,我會試圖將數據加載到一個'varchar2(4000)'(或32000,如果你使用超長字符串的話是12.1)然後編寫你自己的解析邏輯(即第6個逗號右側的所有內容都是您要查找的字段)。 –