2016-06-08 42 views
1

我將數千行上傳到我的postgreSQL數據庫中,爲此我使用COPY FROM語句來節省處理時間。如何返回從PostgreSQL中的COPY FROM語句生成的主鍵?

我沒有在StackExchange上找到關於它的任何信息,所以我現在問:是否可以檢索從COPY語句生成的主鍵(或其他列值),就像我們可以使用RETURNING col_name聲明一個INSERT聲明?

+0

複製到一個臨時表;然後做一個'insert into real_table(...)select ... from temp_table ... returns *' – wildplasser

回答

1

這不可能與COPY

只有INSERTRETURNING id可以給你id -s。

最快旁邊COPY的辦法是多行插入:

INSERT INTO table(col1, col2) VALUES (val1, val2), (val3, val4),... RETURNING id 
+0

好吧,那就是我所要做的。我不能做一個多重插入,因爲我需要速度增加COPY FROM給我比較多個插入。 – kaycee

+0

@ kaycee我給你的例子不是針對多個插入,而是針對單個多行插入,這產生了巨大的差異,而且速度非常快。 –

+0

是的,這就是我的意思。但正如它在這裏所說:https://www.postgresql.org/docs/9.5/static/populate.html,「請注意,即使使用PREPARE,使用COPY加載大量行幾乎總是比使用INSERT更快並且多次插入被分批處理成一筆交易。「這就是爲什麼我想使用COPY。 – kaycee