使用PostgreSql的Copy功能來導入增量數據的步驟


一、參照原數據表創建臨時表

CREATE TEMP TABLE temp_testbulkcopy ON COMMIT DROP as (select * from testbulkcopy limit 0);

1、temp_testbulkcopy 為臨時表的表名

2、testbulkcopy  為實際數據表的表名

3、ON COMMIT DROP 表示用完這次就自動刪掉

 

二、把數據通過Copy的方式導入到臨時表里 

COPY temp_testbulkcopy FROM 'C:\data\testOutPut.csv' WITH csv header DELIMITER '|' encoding 'UTF8';

 

三、根據主鍵刪除實際表與臨時重復的數據(有重復證明就有更新)

delete FROM testbulkcopy where "ID" in (select "ID" from temp_testbulkcopy);

 

四、把臨時表的數據插入到實際表中

INSERT INTO testbulkcopy  select * from temp_testbulkcopy;

 

附錄:

1、用來演示的表的建表語句:

CREATE TABLE public.testbulkcopy
(
    "ID" character varying(38) COLLATE pg_catalog."default" NOT NULL,
    "NAME" character varying(255) COLLATE pg_catalog."default",
    "CITY" character varying(255) COLLATE pg_catalog."default"
)

2、測試數據

ID|NAME|CITY
bedf812f-2311-4717-a749-8b1272fc3c86|張三|北京
bedf812f-2311-4717-a749-8b1272fc3c87|張三|北京
bedf812f-2311-4717-a749-8b1272fc3c88|張三|北京
bedf812f-2311-4717-a749-8b1272fc3c89|張三|北京
bedf812f-2311-4717-a749-8b1272fc3c81|張三|北京
bedf812f-2311-4717-a749-8b1272fc3c82|張三|北京
bedf812f-2311-4717-a749-8b1272fc3c83|張三|北京

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM