((凡在該解決方案!! ??!包涵的PL/SQL代碼...的 答案被埋葬在這裏的某個地方......我介紹了一些注意事項 ,你將需要假設想進入的 任務之前。最後,你會發現甲骨文APEX實際上有一個 內置的解決方案,滿足您指定什麼......與 一些注意事項。))
如果您在Oracle APEX平臺中工作,那麼您將擁有一些優勢。 APEX版本4.2及更高版本有一個名爲「數據加載」的新頁面元素。然而,缺點是上傳目標的定義是固定的而不是動態的。在加載數據之前,您需要知道表格的結構。
克服此問題的一種方法是構建一個通用的雙列表作爲您的目標,它將用於所有上傳。第1列將是您的文件名,第2列將是單個clob數據類型,它將包含整個數據文件的內容,包括標題行。 「數據加載」元素將使用戶有機會通過幾次點擊驗證並選擇該映射約定。
在這一點上,大多數PL/SQL後端工作都是通過繁重的工作來解析和轉換上傳的數據。就動態表創建而言,我注意到Oracle包DBMS_SQL允許執行DDL SQL命令,這可能是製作自定義表的路線。
亞歷克斯·普爾的評論也是很重要的,你需要做出有關數據類型的一些毯子假設或有規定給予什麼樣的數據包含更多的線索。假設你可以依賴現有數據的一個樣本值不好......如果你上傳的所有值都是空的呢?我建議也許在數據輸入第二列有關於數據的每一列的類型線索...就像預期的頭名,也許是:AAAAA =爲五個字符列,#=一個數字,MM/DD/YYYY =具有特定掩蔽的日期。
更簡單的路由: 您需要允許最終用戶訪問APEX服務器工作區上的開發者角色帳戶。它不像你想象的那麼可怕。通過仔細的指導和一些簡單的預防措施,我甚至可以在最不技術的用戶的情況下開展這項工作。這樣做的原因是,有下列菜單項下找到一個更強大的上傳工具:
SQL工作室 - >工具 - >數據車間
有下的「數據加載」的選擇 - >「電子表格數據」
數據加載工具會自動執行以下操作:
- 接受通過瀏覽功能的CSV格式的文件你的客戶端機器
- 上上傳文件,並解析列布局的第一條記錄(名稱)
- 允許用戶從上傳的文件創建新表,或映射到現有的表。
- 對於新表,可以聲明每個列數據類型,並且如果需要從上載的數據進行額外轉換,則還可以指定一個特定的數字/日期掩碼。
- 分析器類型,可選附件(如雙引號),小數約定和貨幣類型也可以在解析上傳文件之前聲明。
一旦用戶識別出所有這些映射和設置,就會使用上傳的數據創建表。之後立即報告記錄上傳中的任何錯誤,並對失敗的記錄提供詳細的反饋。
的安全考慮要注意: 你可能不希望給最終用戶訪問您的服務器APEX的後端...但你可以創建一個新的工作區...只是爲最終用戶...創建一個新的數據庫模式來接收他們的上傳,也許有一些謹慎的資源控制。開發人員是最低要求的角色......但即使最終用戶看到其他內容,也無法從獨立工作區訪問任何重要內容。
幾年前,我在4.0/4.1版本的APEX平臺上實現了隔離的工作區方法,並且它工作得很好。我們的最終用戶可以控制數據輸入的分級和質量檢查(來自組合源的Excel電子表格/ csv導出)。我想這可能會讓她完全脫離圖片,並專注於自動化數據庫與其他來源之間的出口審覈上傳流程。在這種情況下,所涉及的數據量不夠大(100到1000條記錄),並且在將數據推入數據庫之前需要手動審查和編輯導出的數據非常重要......所以人爲因素是在這種情況下仍然很重要 - 這是你現在想要考慮的事情。
這是可能的,但有點醜陋。你怎麼知道列應該是什麼數據類型?這些文件是否可以在服務器上使用;並且它們中的數據會被操縱,還是可以將它們創建爲外部表(而不是加載到普通表中)? –