2015-07-20 48 views
1

讓我們假設以下場景: 我有幾個用戶將準備.csv文件(彼此不知道,因此併發是可能的)。 .csv文件將始終採用相同的格式。 .csv文件中的數據將包含一個id列表以及其他一些列,如update_date。 基於這些數據,我將創建一個過程來更新實際DB表中的數據。更新外部表中的數據

這個想法是使用外部表格,最大限度地簡化.csv創建者,因此他們會將文件放在一個文件夾中,併爲他們完成工作,其餘部分是我的工作。

的問題是:

  1. 我可以有幾個文件爲源1個外部表或我需要1個分機表中的每個文件(和我的意思在這裏是每當有新的FUNC調用從csv加載數據,它應該被添加到現有的外部表...所以不是所有的文件都被一次加載)

  2. 我可以更新外部表中的記錄/字段。

+0

對於問題1:可以將N個.csv文件加載到一個外部表中,因此每個文件不需要1個ext表。問題:2不可以更新外部表格,因爲數據在查詢時會從.csv文件加載到表格中(select * from table)。 – Buddi

+0

我正在談論外部表,不是正常表 –

+0

Oracle Version? –

回答

3

外部表基本上允許查詢存儲在外部文件中的數據。所以從這一點來說,你不能對它發佈UPDATE。在目錄 可以

1)添加新的文件和ALTER

ALTER TABLE my_ex LOCATION ('file1.csv','file2.csv'); 

2)當然你也可以修改現有的文件。沒有外部表的數據庫狀態,每個SELECT都會將數據加載到數據庫中,因此您將始終看到「更新」狀態。

**更新**

試圖修改(例如UPDATE)導致不負載在外部組織表ORA-30657的操作。 爲了能夠維護數據庫中的狀態,數據必須首先在常規表格中複製(CTAS - 從外部表格中選擇表格創建表格)。

+1

上面的鏈接指向11g [12c鏈接](http://docs.oracle.com/database/121/ADMIN/tables.htm#i1007591)有趣的是沒有提供** ALTER LOCATION **語句,但是我的東西(希望)這只是文件問題... –

+0

答案1是我需要的,謝謝,但2,即時通訊問是否有可能更新一次我有它在外部表中,意思是編程,而不是源。 –