我的用例如下:我的數據來自csv文件,我需要將它加載到一個表格中(迄今爲止這麼好,沒有新的東西)。可能會發生相同的數據與更新的列一起發送,在這種情況下,如果重複,我想嘗試插入和替換。是否可以使用pgloader插入和替換行?
所以我的表如下:
CREATE TABLE codes (
code TEXT NOT NULL,
position_x INT,
position_y INT
PRIMARY KEY (code)
);
和傳入的CSV文件是這樣的:
TEST01,1,1
TEST02,1,2
TEST0131,3
TEST04,1,4
它可能在未來我與另一個csv文件的某個時候發生:
TEST01,1,1000 <<<<< updated value
TEST05,1,5
TEST0631,6
TEST07,1,7
現在正在發生的事情是當我跑第一個文件時,一切都很好,但是當我e xecute對於第二個我得到一個錯誤:
pgloader csv.load
而且我csv.load文件看起來像這樣:
LOAD CSV
FROM 'codes.csv' (code, position_x, position_y)
INTO postgresql://localhost:5432/codes?tablename=codes (code, position_x, position_y)
WITH fields optionally enclosed by '"',
fields terminated by ',';
是什麼
2017-04-26T10:33:51.306000+01:00 ERROR Database error 23505: duplicate key value violates unique constraint "codes_pkey"
DETAIL: Key (code)=(TEST01) already exists.
我使用加載數據我試圖用pgloader做到這一點嗎?
我也嘗試刪除主鍵的約束,但最終我在表中有重複的條目。
非常感謝您的幫助。
Thx爲您的答案!以下是作者提供的一些額外信息,以及在問題中解釋的實現所需結果的替代方法 - https://github.com/dimitri/pgloader/issues/540#issuecomment-297372388 – ktulinho