2012-05-28 41 views
-1

我正在使用Spring,Hibernate和PostgreSQL 9.1開發應用程序。要求是用戶可以從瀏覽器上傳批量數據。如何在PostgreSQL中創建會話級別表?

現在,每個用戶上傳的數據都非常粗糙,需要進行大量的驗證,然後才能將其放入實際的交易表中。我想要在用戶上傳時創建臨時表;在將數據成功轉儲到此臨時表之後,我將調用一個過程來執行驗證數據並將臨時表中的數據帶入事務表的實際工作。如果遇到任何錯誤,我會將日誌轉儲到任何其他表中,以便用戶可以從瀏覽器中知道他們的上傳狀態。

在PostgreSQL中,我們有什麼像臨時的會話級表?

+1

爲什麼你需要每個上傳文件的表?爲什麼不將所有文件存儲在同一個表中? –

+0

Echo JB Nizat ...具有'file_id'列的表會更有意義,然後不斷爲每個用戶上傳創建臨時表...存儲過程很難處理動態臨時表命名。但我假設你有每個用戶上傳的動態列數(所以你需要動態列名,因此是臨時表)。不是一件容易的事,可以通過重新考慮用戶需求來處理最好的...這是一次數據加載/初始化還是這是一個持續的過程?如果這是一個正在進行的過程,我強烈建議重新訪問用戶請求。 – Twelfth

回答

1

the 9.1 manual

CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ([ 
    { column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ] 
    | table_constraint 
    | LIKE parent_table [ like_option ... ] } 
    [, ... ] 
]) 
[ INHERITS (parent_table [, ... ]) ] 
[ WITH (storage_parameter [= value] [, ... ]) | WITH OIDS | WITHOUT OIDS ] 
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] 
[ TABLESPACE tablespace ] 

這裏的關鍵詞是暫時的,儘管它是沒有必要的表是暫時的。它可能是一個永久性表格,您在插入前會截斷。整個操作(插入和驗證)必須包含在一個事務中。