2013-09-30 63 views
0

我的意思是我有一個程序,執行100k的批次插入。插入時,這些插入的每個插入都會被分配一個新的ID。我想保留批處理過程的原因很明顯,但是我還需要在創建每個ID時先取出每個ID,然後在處理下一個插入操作之前先處理它。有沒有辦法做到這一點?在批處理過程中可以運行java命令嗎?

+0

對PostgreSQL不是非常瞭解,但有沒有一種方法讓您準備好的語句返回密鑰?我正在使用帶有Jdbc連接的MySQL DB,語法爲'PreparedStatement pstmt = JdbcDB.getConnection()。prepareStatement(「SQL GOES HERE」,Statement.RETURN_GENERATED_KEYS);'重要的部分是'Statement.RETURN_GENERATED_KEYS' 。注意'JdbcDB'只是我創建的一個包裝類。 'getConnection()'返回一個'java.sql.Connection'。 – Meesh

+0

這確實有點幫助,我沒有意識到這是一個選項,而且這是我一直在尋找的東西。但是,即使它返回密鑰,在批處理進入下一步之前,是否有辦法讓我在java中使用該密鑰執行操作? –

回答

0

事情在PostgreSQL中的工作與MySQL不同。首先,你必須編寫插入爲:

INSERT INTO foo (...) VALUES (...) 
RETURNING id; 

RETURNING id很重要,因爲它告訴insert語句返回的東西。然後,您應該能夠按照您所期望的select語句撤回id。

我不太清楚PostgreSQl的JDBC驅動程序如何實現這個批處理。如果你必須這樣做,你可以修改這個來將id存儲在一個臨時表中,或者你可以在之後查詢的東西。

相關問題