DBA: เดธเดฎเดจเตเดตเดฏเด™เตเด™เดณเตเด‚ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟเด•เดณเตเด‚ เดธเดฎเตผเดคเตเดฅเดฎเดพเดฏเดฟ เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเด•

เดตเดฒเดฟเดฏ เดกเดพเดฑเตเดฑเดพ เดธเต†เดฑเตเดฑเตเด•เดณเตเดŸเต† เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เดฟเดจเดพเดฏเดฟ (เดตเตเดฏเดคเตเดฏเดธเตเดค ETL เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ: เด‡เดฑเด•เตเด•เตเดฎเดคเดฟเด•เตพ, เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด™เตเด™เตพ, เด’เดฐเต เดฌเดพเดนเตเดฏ เด‰เดฑเดตเดฟเดŸเดตเตเดฎเดพเดฏเดฟ เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตฝ) เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด†เดตเดถเตเดฏเดฎเตเดฃเตเดŸเต เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด•เดฎเดพเดฏเดฟ "เด“เตผเด•เตเด•เตเด•" เด‰เดŸเตป เดคเดจเตเดจเต† เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเด• เดตเดฒเดฟเดฏ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚.

เด‡เดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดœเต‹เดฒเดฟ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด‡เดคเตเดชเต‹เดฒเต†เดฏเดพเดฃเต: "เด‡เดตเดฟเดŸเต† เดคเดจเตเดจเต† เด…เด•เตเด•เต—เดฃเตเดŸเดฟเด‚เด—เต เดตเด•เตเดชเตเดชเต เด•เตเดฒเดฏเตปเตเดฑเต เดฌเดพเด™เตเด•เดฟเตฝ เดจเดฟเดจเตเดจเต เด‡เดฑเด•เตเด•เดฟ เด…เดตเดธเดพเดจเด‚ เดฒเดญเดฟเดšเตเดš เดชเต‡เดฏเตโ€Œเดฎเต†เตปเตเดฑเตเด•เตพ, เดจเดฟเด™เตเด™เตพ เด…เดต เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดตเต‡เด—เดคเตเดคเดฟเตฝ เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดฒเดฟเด™เตเด•เต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚.

เดŽเดจเตเดจเดพเตฝ เดˆ โ€œเดŽเดจเตเดคเต‹โ€ เดตเดฟเตปเตเดฑเต† เด…เดณเดตเต เดจเต‚เดฑเตเด•เดฃเด•เตเด•เดฟเดจเต เดฎเต†เด—เดพเดฌเตˆเดฑเตเดฑเตเด•เดณเดฟเตฝ เด…เดณเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเดฎเตเดชเต‹เตพ, เดธเต‡เดตเดจเด‚ 24x7 เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเดฐเดฃเด‚, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต€เดตเดฟเดคเดคเตเดคเต† เดจเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เดชเดพเตผเดถเตเดตเดซเดฒเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เตเดจเตเดจเต.
DBA: เดธเดฎเดจเตเดตเดฏเด™เตเด™เดณเตเด‚ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟเด•เดณเตเด‚ เดธเดฎเตผเดคเตเดฅเดฎเดพเดฏเดฟ เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเด•
PostgreSQL-เตฝ (เด…เดคเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ) เด…เดต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดšเดฟเดฒ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚, เด…เดคเต เดตเต‡เด—เดคเตเดคเดฟเดฒเตเด‚ เด•เตเดฑเดžเตเดž เดตเดฟเดญเดต เด‰เดชเดญเต‹เด—เดคเตเดคเดฟเดฒเตเด‚ เดŽเดฒเตเดฒเดพเด‚ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚.

1. เดŽเดตเดฟเดŸเต† เด•เดฏเดฑเตเดฑเดฟ เด…เดฏเดฏเตเด•เตเด•เดฃเด‚?

เด†เดฆเตเดฏเด‚, เดจเดฎเตเด•เตเด•เต โ€œเดชเตเดฐเต‹เดธเดธเตเดธเตโ€ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เดกเดพเดฑเตเดฑ เดŽเดตเดฟเดŸเต† เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดฎเต†เดจเตเดจเต เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เดพเด‚.

1.1 เดคเดพเดคเตเด•เดพเดฒเดฟเด• เดชเดŸเตเดŸเดฟเด•เด•เตพ (เดŸเต†เดฎเตเดชเดฑเดฑเดฟ เดŸเต‡เดฌเดฟเตพ)

เดคเดคเตเดตเดคเตเดคเดฟเตฝ, PostgreSQL-เดจเต เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดŸเต‡เดฌเดฟเดณเตเด•เตพ เดฎเดฑเตเดฑเต‡เดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฃเต. เด…เดคเดฟเดจเดพเตฝ, เด…เดจเตเดงเดตเดฟเดถเตเดตเดพเดธเด™เตเด™เตพ เด‡เดทเตเดŸเดชเตเดชเต†เดŸเตเดจเตเดจเต "เด…เดตเดฟเดŸเต†เดฏเตเดณเตเดณเดคเต†เดฒเตเดฒเดพเด‚ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ เดฎเดพเดคเตเดฐเด‚ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเด‚". เดŽเดจเตเดจเดพเตฝ เดจเดฟเดฐเดตเดงเดฟ เด•เดพเดฐเตเดฏเดฎเดพเดฏ เดตเตเดฏเดคเตเดฏเดพเดธเด™เตเด™เดณเตเด‚ เด‰เดฃเตเดŸเต.

เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด“เดฐเต‹ เด•เดฃเด•เตเดทเดจเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ "เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเต"

เดฐเดฃเตเดŸเต เด•เดฃเด•เตเดทเดจเตเด•เตพ เด’เดฐเต‡ เดธเดฎเดฏเด‚ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ CREATE TABLE x, เด…เดชเตเดชเต‹เตพ เด†เตผเด•เตเด•เต†เด™เตเด•เดฟเดฒเตเด‚ เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚ เด…เดจเดจเตเดฏเดฎเดพเดฏ เดคเต†เดฑเตเดฑเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดตเดธเตเดคเตเด•เตเด•เตพ.

เดŽเดจเตเดจเดพเตฝ เด‡เดฐเตเดตเดฐเตเด‚ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดšเตเดšเดพเตฝ CREATE TEMPORARY TABLE x, เด…เดชเตเดชเต‹เตพ เดฐเดฃเตเดŸเตเดชเต‡เดฐเตเด‚ เด…เดคเต เดธเดพเดงเดพเดฐเดฃ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดšเต†เดฏเตเดฏเตเด‚, เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเด•เตผเดชเตเดชเต เดชเดŸเตเดŸเดฟเด•เด•เตพ. เด…เดตเตผเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดชเตŠเดคเตเดตเดพเดฏเดฟ เด’เดจเตเดจเตเดฎเดฟเดฒเตเดฒ.

เดตเดฟเดšเตเด›เต‡เดฆเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ "เดธเตเดตเดฏเด‚ เดจเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด•"

เด•เดฃเด•เตเดทเตป เด…เดŸเดฏเตโ€Œเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดŽเดฒเตเดฒเดพ เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดŸเต‡เดฌเดฟเดณเตเด•เดณเตเด‚ เดธเตเดตเดฏเดฎเต‡เดต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดชเตเดชเต†เดŸเตเด‚ DROP TABLE x เด…เดฒเตเดฒเดพเดคเต† เด’เดฐเต เด•เดพเดฐเตเดฏเดตเตเดฎเดฟเดฒเตเดฒ...

เดจเดฟเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ เด‡เดŸเดชเดพเดŸเต เดฎเต‹เดกเดฟเตฝ pgbouncer, เดˆ เด•เดฃเด•เตเดทเตป เด‡เดชเตเดชเต‹เดดเตเด‚ เดธเดœเต€เดตเดฎเดพเดฃเต†เดจเตเดจเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดตเดฟเดถเตเดตเดธเดฟเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเดฐเตเดจเตเดจเต, เด…เดคเดฟเตฝ เดˆ เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดชเดŸเตเดŸเดฟเด• เด‡เดชเตเดชเต‹เดดเตเด‚ เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดŸเต.

เด…เดคเดฟเดจเดพเตฝ, เดฎเดฑเตเดฑเตŠเดฐเต เด•เดฃเด•เตเดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต pgbouncer-เดฒเต‡เด•เตเด•เต เด‡เดคเต เดตเต€เดฃเตเดŸเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต เด’เดฐเต เดชเดฟเดถเด•เดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเด•เตเด‚. เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดฎเดฑเดฟเด•เดŸเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ CREATE TEMPORARY TABLE IF NOT EXISTS x.

เดถเดฐเดฟเดฏเดพเดฃเต, เดŽเดจเตเดคเดพเดฏเดพเดฒเตเด‚ เด‡เดคเต เดšเต†เดฏเตเดฏเดพเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต, เด•เดพเดฐเดฃเด‚ "เดฎเตเตป เด‰เดŸเดฎเดฏเดฟเตฝ" เดจเดฟเดจเตเดจเต เดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจ เดกเดพเดฑเตเดฑ เดจเดฟเด™เตเด™เตพเด•เตเด•เต "เดชเต†เดŸเตเดŸเต†เดจเตเดจเต" เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚. เดชเด•เดฐเด‚, เดฎเดพเดจเตเดตเตฝ เดตเดพเดฏเดฟเดšเตเดšเต เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด…เดคเต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เด•เดพเดฃเตเดจเตเดจเดคเต เดตเดณเดฐเต† เดจเดฒเตเดฒเดคเดพเดฃเต ON COMMIT DROP - เด…เดคเดพเดฏเดคเต, เด‡เดŸเดชเดพเดŸเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดฎเตเดชเต‹เตพ, เดชเดŸเตเดŸเดฟเด• เดธเตเดตเดฏเดฎเต‡เดต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดชเตเดชเต†เดŸเตเด‚.

เดจเต‹เตบ-เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป

เด…เดต เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด•เดฃเด•เตเดทเดจเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเตเดณเตเดณเดคเดฟเดจเดพเตฝ, เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดชเดŸเตเดŸเดฟเด•เด•เตพ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เดฟเดฒเตเดฒ. เดชเด•เตเดทเต‡ เด‡เดคเต เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด‡เดฐเดŸเตเดŸ เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เดฟเตปเตเดฑเต† เด†เดตเดถเตเดฏเด•เดค เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเต เด•เต‚เดฎเตเดชเดพเดฐเด‚ + เดตเดพเตพ, เด…เดคเดฟเดจเดพเตฝ เด…เดคเดฟเดฒเต‡เด•เตเด•เต เดคเดฟเดฐเตเด•เตเด•/เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•/เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด• เดตเดณเดฐเต† เดตเต‡เด—เดคเดฏเตเดณเตเดณเดคเดพเดฃเต.

เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดŸเต‡เดฌเดฟเตพ เด‡เดชเตเดชเต‹เดดเตเด‚ "เดเดคเดพเดฃเตเดŸเต เดธเดพเดงเดพเดฐเดฃ" เดชเดŸเตเดŸเดฟเด•เดฏเดพเดฏเดคเดฟเดจเดพเตฝ, เด…เดคเต เด’เดฐเต เดชเด•เตผเดชเตเดชเดฟเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เด•เตเดฑเดžเตเดžเดคเต เด‡เดชเตเดชเต‹เดดเต†เด™เตเด•เดฟเดฒเตเด‚, เด…เดจเตเดฌเดจเตเดง เดชเดพเดšเตเดšเต เดตเดณเดฐเต†เด•เตเด•เดพเดฒเดฎเดพเดฏเดฟ เดชเตเดฐเดšเดฐเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เด™เตเด•เดฟเดฒเตเด‚.

1.2 เดฒเต‹เด—เต เดšเต†เดฏเตเดฏเดพเดคเตเดค เดฎเต‡เดถ

เดŽเดจเตเดจเดพเตฝ เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเดฃเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด‡เดŸเดชเดพเดŸเดฟเดจเตเดณเตเดณเดฟเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดพเดคเตเดค เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเดณเตเดณ ETL เดชเตเดฐเต‹เดธเดธเตเดธเต เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดชเตเดชเต‹เดดเตเด‚ เด‰เดฃเตเดŸเต เด‡เดŸเดชเดพเดŸเต เดฎเต‹เดกเดฟเตฝ pgbouncer? ..

เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดซเตเดฒเต‹ เดตเดณเดฐเต† เดตเดฒเตเดคเดพเดฃเต เด’เดฐเต เด•เดฃเด•เตเดทเดจเดฟเตฝ เดฎเดคเดฟเดฏเดพเดฏ เดฌเดพเตปเดกเตโ€Œเดตเดฟเดกเตเดคเตเดคเต เด‡เดฒเตเดฒ เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดจเดฟเดจเตเดจเต (เดตเดพเดฏเดฟเด•เตเด•เตเด•, เด“เดฐเต‹ เดธเดฟเดชเดฟเดฏเตเดตเตเด‚ เด’เดฐเต เดชเตเดฐเต‹เดธเดธเตเดธเต)?..

เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดšเดฟเดฒ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเด•เตเด•เตเดจเตเดจเต เด…เดธเดฎเดจเตเดตเดฟเดคเดฎเดพเดฏเดฟ เดตเตเดฏเดคเตเดฏเดธเตเดค เดฌเดจเตเดงเด™เตเด™เดณเดฟเตฝ?..

เด‡เดตเดฟเดŸเต† เด’เดฐเต เด“เดชเตเดทเตป เดฎเดพเดคเตเดฐเดฎเต‡เดฏเตเดณเตเดณเต‚ - เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด•เดฎเดฒเตเดฒเดพเดคเตเดค เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด•เดฎเดพเดฏเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•. เดชเตบ, เด…เดคเต†. เด…เดคเดพเดฃเต:

  • เด†เดฐเตเดฎเดพเดฏเตเด‚ เดตเดฟเดญเดœเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เดชเดฐเดฎเดพเดตเดงเดฟ เด•เตเดฐเดฎเดฐเดนเดฟเดคเดฎเดพเดฏ เดชเต‡เดฐเตเด•เดณเตเดณเตเดณ "เดŽเตปเตเดฑเต† เดธเตเดตเดจเตเดคเด‚" เดชเดŸเตเดŸเดฟเด•เด•เตพ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต
  • เดŽเด•เตเดธเตเดŸเตเดฐเดพเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเด•: เด’เดฐเต เดฌเดพเดนเตเดฏ เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดต เดจเดฟเดฑเดšเตเดšเต
  • เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเด•: เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดคเต, เด•เต€ เดฒเดฟเด™เตเด•เดฟเด‚เด—เต เดซเต€เตฝเดกเตเด•เตพ เดชเต‚เดฐเดฟเดชเตเดชเดฟเดšเตเดšเต
  • เดญเดพเดฐเด‚: เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดŸเต‡เดฌเดฟเดณเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดคเดฏเตเดฏเดพเดฑเดพเดฏ เดกเดพเดฑเตเดฑ เดชเด•เตผเดจเตเดจเต
  • "เดŽเตปเตเดฑเต†" เดชเดŸเตเดŸเดฟเด•เด•เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดฟ

เด‡เดชเตเดชเต‹เตพ - เดคเตˆเดฒเดคเตเดคเดฟเตฝ เด’เดฐเต เดˆเดšเตเดš. เดธเดคเตเดฏเดคเตเดคเดฟเตฝ, PostgreSQL-เดฒเต† เดŽเดฒเตเดฒเดพ เดŽเดดเตเดคเตเดคเตเด•เดณเตเด‚ เดฐเดฃเตเดŸเตเดคเดตเดฃ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเต - เด†เดฆเตเดฏเด‚ WAL เตฝ, เดคเตเดŸเตผเดจเตเดจเต เดชเดŸเตเดŸเดฟเด•/เด‡เตปเดกเด•เตเดธเต เดฌเต‹เดกเดฟเด•เดณเดฟเดฒเต‡เด•เตเด•เต. เดŽเดธเดฟเดเดกเดฟเดฏเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดกเดพเดฑเตเดฑเดพ เดฆเตƒเดถเตเดฏเดชเดฐเดค เดถเดฐเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเดพเดฃเต เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต COMMIT'เดจเดŸเตเดŸเดฟ เด†เตปเดกเต ROLLBACK'เดถเต‚เดจเตเดฏเดฎเดพเดฏ เด‡เดŸเดชเดพเดŸเตเด•เตพ.

เดŽเดจเตเดจเดพเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ! เดžเด™เตเด™เตพเด•เตเด•เต เดฎเตเดดเตเดตเตป เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเด‚ เด‰เดฃเตเดŸเต เด’เดจเตเดจเตเด•เดฟเตฝ เด…เดคเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดตเดฟเดœเดฏเดฟเดšเตเดšเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดคเต เดตเดฟเดœเดฏเดฟเดšเตเดšเดฟเดฒเตเดฒ.. เดŽเดคเตเดฐ เด‡เตปเตเดฑเตผเดฎเต€เดกเดฟเดฏเดฑเตเดฑเต เด‡เดŸเดชเดพเดŸเตเด•เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเดคเต เดชเตเดฐเดถเตเดจเดฎเดฒเตเดฒ - โ€œเดฎเดงเตเดฏเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเด•เตเดฐเดฟเดฏ เดคเตเดŸเดฐเตเดจเตเดจเดคเดฟเตฝโ€ เดžเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเดฟเดฒเตเดฒ, เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚ เด…เดคเต เดŽเดตเดฟเดŸเต†เดฏเดพเดฃเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดฒเตเดฒเดพเดคเตเดคเดชเตเดชเต‹เตพ.

เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, PostgreSQL เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ, เดชเดคเดฟเดชเตเดชเต 9.1-เตฝ เด‡เดคเตเดคเดฐเดฎเตŠเดฐเต เด•เดพเดฐเตเดฏเด‚ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเดšเตเดšเต UNLOGGED เดชเดŸเตเดŸเดฟเด•เด•เตพ:

เดˆ เดธเต‚เดšเดจ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดชเดŸเตเดŸเดฟเด• เด…เตบเดฒเต‹เด—เต เดšเต†เดฏเตเดคเดคเดพเดฏเดฟ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด…เตบเดฒเต‹เด—เต เดšเต†เดฏเตเดฏเดพเดคเตเดค เดŸเต‡เดฌเดฟเดณเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ, เดฑเตˆเดฑเตเดฑเต-เดŽเดนเต†เดกเต เดฒเต‹เด—เดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดจเตเดจเดฟเดฒเตเดฒ (เด…เดงเตเดฏเดพเดฏเด‚ 29 เด•เดพเดฃเตเด•), เด‡เดคเต เด…เดคเตเดคเดฐเด‚ เดŸเต‡เดฌเดฟเดณเตเด•เตพเด•เตเด•เต เด•เดพเดฐเดฃเดฎเดพเด•เตเดจเตเดจเต. เดชเดคเดฟเดตเดฟเดฒเตเด‚ เดตเดณเดฐเต† เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด…เดตเตผ เดชเดฐเดพเดœเดฏเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเตเด•เตเดคเดฐเดฒเตเดฒ; เดธเต†เตผเดตเตผ เดคเด•เดฐเดพเตผ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดŸเดฟเดฏเดจเตเดคเดฐ เดทเดŸเตเดŸเตเดกเต—เตบ เดธเด‚เดญเดตเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด’เดฐเต เด…เตบเดฒเต‹เด—เต เดšเต†เดฏเตเดค เดชเดŸเตเดŸเดฟเด• เดฏเดพเดจเตเดคเตเดฐเดฟเด•เดฎเดพเดฏเดฟ เดตเต†เดŸเตเดŸเดฟเดšเตเดšเตเดฐเตเด•เตเด•เดฟ. เด•เต‚เดŸเดพเดคเต†, เด…เตบเดฒเต‹เด—เต เดšเต†เดฏเตเดค เดชเดŸเตเดŸเดฟเด•เดฏเดฟเดฒเต† เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพ เดชเด•เตผเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ เด…เดŸเดฟเดฎ เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต. เดฒเต‹เด—เต เดšเต†เดฏเตเดฏเดพเดคเตเดค เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดš เดŽเดฒเตเดฒเดพ เดธเต‚เดšเดฟเด•เด•เดณเตเด‚ เดธเตเดตเดฏเดฎเต‡เดต เด…เตบเดฒเต‹เด—เต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚.

เดšเตเดฐเตเด•เตเด•เดคเตเดคเดฟเตฝ, เด…เดคเต เดตเดณเดฐเต† เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เดŽเดจเตเดจเดพเตฝ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเตผ "เดตเต€เดดเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ", เด…เดคเต เด…เดฐเต‹เดšเด•เดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เดŽเดคเตเดฐ เดคเดตเดฃ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเต, เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต "เดชเตเดจเดฐเตเดœเตเดœเต€เดตเดฟเดชเตเดชเดฟเดšเตเดšเดคเดฟเดจเต" เดถเต‡เดทเด‚ "เดฎเดงเตเดฏเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต" เด‡เดคเต เดŽเด™เตเด™เดจเต† เดถเดฐเดฟเดฏเดพเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดจเดฟเด™เตเด™เดณเตเดŸเต† ETL เดชเตเดฐเต‹เดธเดธเตเดธเดฟเดจเต เด…เดฑเดฟเดฏเดพเดฎเต‹?

เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด•เต‡เดธเต เดจเดฟเด™เตเด™เดณเตเดŸเต‡เดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• UNLOGGEDเดชเด•เตเดทเต‡ เด’เดฐเดฟเด•เตเด•เดฒเตเด‚ เดฏเดฅเดพเตผเดคเตเดฅ เดชเดŸเตเดŸเดฟเด•เด•เดณเดฟเตฝ เดˆ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดฐเตเดคเต, เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸเดคเดพเดฃเต.

1.3 เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟเตฝ { เดตเดฐเดฟเด•เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด• | เดกเตเดฐเต‹เดชเตเดชเต}

เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด’เดฐเต เด‡เดŸเดชเดพเดŸเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดฎเตเดชเต‹เตพ เดฏเดพเดจเตเดคเตเดฐเดฟเด• เดธเตเดตเดญเดพเดตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เดˆ เดจเดฟเตผเดฎเตเดฎเดพเดฃเด‚ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เด“เตบ ON COMMIT DROP เดžเดพเตป เด‡เดคเดฟเดจเด•เด‚ เดฎเตเด•เดณเดฟเตฝ เดŽเดดเตเดคเดฟ, เด…เดคเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต DROP TABLE, เดŽเดจเตเดจเดพเตฝ เด•เต‚เดŸเต† ON COMMIT DELETE ROWS เดธเดพเดนเดšเดฐเตเดฏเด‚ เด•เต‚เดŸเตเดคเตฝ เดฐเดธเด•เดฐเดฎเดพเดฃเต - เด…เดคเต เด‡เดตเดฟเดŸเต† เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต TRUNCATE TABLE.

เด’เดฐเต เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดฎเต†เดฑเตเดฑเดพ-เดตเดฟเดตเดฐเดฃเด‚ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเตเดดเตเดตเตป เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเตเด‚ เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดŸเต‡เดฌเดฟเดณเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฏเดคเดฟเดจเดพเตฝ, เดคเตเดŸเตผเดจเตเดจเต เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดŸเต‡เดฌเดฟเดณเตเด•เตพ เดจเดฟเดฐเดจเตเดคเดฐเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดŸเต‡เดฌเดฟเดณเตเด•เดณเตเดŸเต† เด—เตเดฐเตเดคเดฐเดฎเดพเดฏ "เดตเต€เด•เตเด•เด‚" เดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เตเดจเตเดจเต pg_class, pg_attribute, pg_attrdef, pg_depend,...

เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเตเดณเตเดณ เด•เดฃเด•เตเดทเดจเดฟเตฝ เด’เดฐเต เดคเตŠเดดเดฟเดฒเดพเดณเดฟ เด‰เดฃเตเดŸเต†เดจเตเดจเต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เตเด•, เด…เดคเต เด“เดฐเต‹ เดธเต†เด•เตเด•เตปเดกเดฟเดฒเตเด‚ เด’เดฐเต เดชเตเดคเดฟเดฏ เด‡เดŸเดชเดพเดŸเต เดคเตเดฑเด•เตเด•เตเด•เดฏเตเด‚ เด’เดฐเต เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดŸเต‡เดฌเดฟเตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต... เดธเดฟเดธเตเดฑเตเดฑเด‚ เดŸเต‡เดฌเดฟเดณเตเด•เดณเดฟเตฝ เด…เดงเดฟเด•เดฎเดพเดฏเดฟ เดฎเดพเดฒเดฟเดจเตเดฏเด‚ เด•เตเดฎเดฟเดžเตเดžเตเด•เต‚เดŸเตเด‚. เด‡เดคเต เด“เดฐเต‹ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเด‚ เด…เดงเดฟเด• เดฌเตเดฐเต‡เด•เตเด•เตเด•เตพ เด‰เดฃเตเดŸเดพเด•เตเด•เตเด‚.

เดชเตŠเดคเตเดตเต‡, เด‡เดคเต เดšเต†เดฏเตเดฏเดฐเตเดคเต! เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด‡เดคเต เด•เต‚เดŸเตเดคเตฝ เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฃเต CREATE TEMPORARY TABLE x ... ON COMMIT DELETE ROWS เด‡เดŸเดชเดพเดŸเต เดธเตˆเด•เตเด•เดฟเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฑเดคเตเดคเต†เดŸเตเด•เตเด•เตเด• - เดคเตเดŸเตผเดจเตเดจเต เด“เดฐเต‹ เดชเตเดคเดฟเดฏ เด‡เดŸเดชเดพเดŸเดฟเตปเตเดฑเต†เดฏเตเด‚ เด†เดฐเด‚เดญเดคเตเดคเต‹เดŸเต† เดชเดŸเตเดŸเดฟเด•เด•เตพ เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เดจเดฟเดฒเดจเดฟเตฝเด•เตเด•เตเด‚ (เด’เดฐเต เด•เต‹เตพ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเด• CREATE), เดชเด•เตเดทเต‡ เดถเต‚เดจเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เดจเดจเตเดฆเดฟ TRUNCATE เดฎเตเดฎเตเดชเดคเตเดคเต† เด‡เดŸเดชเดพเดŸเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเดฎเตเดชเต‹เตพ (เด…เดคเดฟเตปเตเดฑเต† เด•เต‹เดณเตเด‚ เดžเด™เตเด™เตพ เดธเด‚เดฐเด•เตเดทเดฟเดšเตเดšเต).

1.4 เดชเต‹เดฒเต†...เด‰เตพเดชเตเดชเต†เดŸเต†...

เดคเดพเตฝเด•เดพเดฒเดฟเด• เดŸเต‡เดฌเดฟเดณเตเด•เตพเด•เตเด•เตเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เด‰เดชเดฏเต‹เด— เด•เต‡เดธเตเด•เดณเดฟเตฝ เด’เดจเตเดจเต เดตเดฟเดตเดฟเดง เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟเด•เดณเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเต - เด•เต‚เดŸเดพเดคเต† เดกเต†เดตเดฒเดชเตเดชเตผ เด•เตเดทเต€เดฃเดฟเดคเดจเดพเดฏเดฟ เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดŸเต‡เดฌเดฟเดณเดฟเตปเตเดฑเต† เดซเต€เตฝเดกเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดคเตปเตเดฑเต† เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดชเตเดฐเด–เตเดฏเดพเดชเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเดฟ เด’เดŸเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต...

เดŽเดจเตเดจเดพเตฝ เด…เดฒเดธเดคเดฏเดพเดฃเต เดชเตเดฐเต‹เด—เดคเดฟเดฏเตเดŸเต† เดŽเดžเตเดšเดฟเตป! เด…เดคเตเด•เต†เดพเดฃเตเดŸเดพเดฃเต "เดธเดพเดฎเตเดชเดฟเตพ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ" เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• เด‡เดคเต เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚:

CREATE TEMPORARY TABLE import_table(
  LIKE target_table
);

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดˆ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเดฒเต‡เด•เตเด•เต เดงเดพเดฐเดพเดณเด‚ เดกเดพเดฑเตเดฑ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด…เดคเดฟเดฒเต‚เดŸเต† เดคเดฟเดฐเดฏเตเดจเตเดจเดคเต เด’เดฐเดฟเด•เตเด•เดฒเตเด‚ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เดฟเดฒเตเดฒ. เดŽเดจเตเดจเดพเตฝ เด‡เดคเดฟเดจเต เด’เดฐเต เดชเดฐเดฎเตเดชเดฐเดพเด—เดค เดชเดฐเดฟเดนเดพเดฐเดฎเตเดฃเตเดŸเต - เดธเต‚เดšเดฟเด•เด•เตพ! เด’เดชเตเดชเด‚, เด…เดคเต†, เด’เดฐเต เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดชเดŸเตเดŸเดฟเด•เดฏเตเด•เตเด•เตเด‚ เดธเต‚เดšเดฟเด•เด•เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚.

เดชเดฒเดชเตเดชเต‹เดดเตเด‚, เด†เดตเดถเตเดฏเดฎเดพเดฏ เดธเต‚เดšเดฟเด•เด•เตพ เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดธเต‚เดšเดฟเด•เด•เดณเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดŽเดดเตเดคเดพเด‚ LIKE target_table INCLUDING INDEXES.

เดจเดฟเด™เตเด™เตพเด•เตเด•เตเด‚ เด†เดตเดถเตเดฏเดฎเต†เด™เตเด•เดฟเตฝ DEFAULT-เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเตเดฐเดพเดฅเดฎเดฟเด• เด•เต€ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต), เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ LIKE target_table INCLUDING DEFAULTS. เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ - LIKE target_table INCLUDING ALL โ€” เดชเด•เตผเดชเตเดชเตเด•เตพ เดกเดฟเดซเต‹เตพเดŸเตเดŸเตเด•เตพ, เดธเต‚เดšเดฟเด•เด•เตพ, เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ,...

เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดคเดพเดฃเต†เด™เตเด•เดฟเตฝ เด‡เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เดธเต‚เดšเดฟเด•เด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‰เดŸเตป เดชเดŸเตเดŸเดฟเด• เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเด•, เดคเตเดŸเตผเดจเตเดจเต เดกเดพเดฑเตเดฑ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเดพเตป เด•เต‚เดŸเตเดคเตฝ เดธเดฎเดฏเดฎเต†เดŸเตเด•เตเด•เตเด‚เดจเดฟเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เดŽเดฒเตเดฒเดพเด‚ เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเดฟเดจเตเดจเต€เดŸเต เดธเต‚เดšเดฟเด•เด•เตพ เดšเตเดฐเตเดŸเตเดŸเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต‡เด•เตเด•เดพเตพ - เด‡เดคเต เดŽเด™เตเด™เดจเต† เดšเต†เดฏเตเดฏเตเดจเตเดจเตเดตเต†เดจเตเดจเต เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เดจเต‹เด•เตเด•เตเด• pg_dump.

เดšเตเดฐเตเด•เตเด•เดคเตเดคเดฟเตฝ, เดฐเตเดคเตเดซเตเดฎเต!

2. เดŽเด™เตเด™เดจเต† เดŽเดดเตเดคเดพเด‚?

เดžเดพเตป เดชเดฑเดฏเดŸเตเดŸเต† - เด…เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• COPY"เดชเดพเด•เตเด•เต" เดŽเดจเตเดจเดคเดฟเดจเต เดชเด•เดฐเด‚ เด’เดดเตเด•เตเด• INSERT, เดšเดฟเดฒ เดธเดฎเดฏเด™เตเด™เดณเดฟเตฝ เดคเตเดตเดฐเดฃเด‚. เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เดœเดจเดฑเต‡เดฑเตเดฑเตเดšเต†เดฏเตเดค เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเต‹เดฒเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เด•เดดเดฟเดฏเตเด‚.

3. เดŽเด™เตเด™เดจเต† เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเดพเด‚?

เด…เดคเดฟเดจเดพเตฝ, เดจเดฎเตเดฎเตเดŸเต† เด†เดฎเตเด–เด‚ เด‡เดคเตเดชเต‹เดฒเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดŸเตเดŸเต†:

  • เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เด•เตเดฒเดฏเตปเตเดฑเต เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดจเดฟเด™เตเด™เตพเด•เตเด•เตเดฃเตเดŸเต 1 เดฎเดฟ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ
  • เดŽเดฒเตเดฒเดพ เดฆเดฟเดตเดธเดตเตเด‚ เด’เดฐเต เด•เตเดฒเดฏเตปเตเดฑเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเตเดคเดฟเดฏเตŠเดฐเต†เดฃเตเดฃเด‚ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเต เดฎเตเดดเตเดตเตป "เดšเดฟเดคเตเดฐเด‚"
  • เด…เดจเตเดญเดตเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเต เด•เดพเดฒเดพเด•เดพเดฒเด™เตเด™เดณเดฟเตฝ เด…เดฑเดฟเดฏเดพเด‚ 10K-เตฝ เด•เต‚เดŸเตเดคเตฝ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดฎเดพเดฑเตเดฑเดฟเดฒเตเดฒ

เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตปเตเดฑเต† เด’เดฐเต เด•เตเดฒเดพเดธเดฟเด•เต เด‰เดฆเดพเดนเดฐเดฃเด‚ KLADR เดฌเต‡เดธเต - เดฎเตŠเดคเตเดคเดคเตเดคเดฟเตฝ เดงเดพเดฐเดพเดณเด‚ เดตเดฟเดฒเดพเดธเด™เตเด™เตพ เด‰เดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เด“เดฐเต‹ เดชเตเดฐเดคเดฟเดตเดพเดฐ เด…เดชเตโ€Œเดฒเต‹เดกเดฟเดฒเตเด‚ เดฆเต‡เดถเต€เดฏ เดคเดฒเดคเตเดคเดฟเตฝ เดชเต‹เดฒเตเด‚ เดตเดณเดฐเต† เด•เตเดฑเดšเตเดšเต เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเดฃเตเดŸเต (เดธเต†เดฑเตเดฑเดฟเตฝเดฎเต†เตปเตเดฑเตเด•เดณเตเดŸเต† เดชเตเดจเตผเดจเดพเดฎเด•เดฐเดฃเด‚, เดคเต†เดฐเตเดตเตเด•เดณเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚, เดชเตเดคเดฟเดฏ เดตเต€เดŸเตเด•เดณเตเดŸเต† เดฐเต‚เดชเด‚).

3.1 เดชเต‚เตผเดฃเตเดฃ เดธเดฎเดจเตเดตเดฏ เด…เตฝเด—เต‹เดฐเดฟเดคเด‚

เดฒเดพเดณเดฟเดคเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดกเดพเดฑเตเดฑ เดชเตเดจเดƒเด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเต†เดจเตเดจเต เดชเดฑเดฏเดพเด‚ - เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดซเต‹เดฎเดฟเดฒเต‡เด•เตเด•เต เดชเดŸเตเดŸเดฟเด• เด•เตŠเดฃเตเดŸเตเดตเดฐเดฟเด•, เด…เดคเดพเดฏเดคเต:

  • เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเตเด• เด‡เดจเดฟ เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒเดพเดคเตเดค เดŽเดฒเตเดฒเดพเด‚
  • เด…เดชเตเด—เตเดฐเต‡เดกเต เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณเดคเตเด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฎเดพเดฏ เดŽเดฒเตเดฒเดพเด‚
  • เดคเดฟเดฐเตเด•เตเด• เด‡เดคเตเดตเดฐเต† เดธเด‚เดญเดตเดฟเด•เตเด•เดพเดคเตเดคเดคเต†เดฒเตเดฒเดพเด‚

เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดˆ เด•เตเดฐเดฎเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเต‡เดฃเตเดŸเดคเต? เด•เดพเดฐเดฃเด‚ เด‡เด™เตเด™เดจเต†เดฏเดพเดฃเต เดฎเต‡เดถเดฏเตเดŸเต† เดตเดฒเดฟเดชเตเดชเด‚ เด•เตเดฑเดžเตเดžเดคเต (MVCC เด“เตผเด•เตเด•เตเด•!).

dst-เตฝ เดจเดฟเดจเตเดจเต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•

เด‡เดฒเตเดฒ, เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฐเดฃเตเดŸเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เดจเต‡เดŸเดพเดจเดพเด•เตเด‚:

  • เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเตเด• (DELETE) เดชเตŠเดคเตเดตเต† เดŽเดฒเตเดฒเดพเด‚
  • เดคเดฟเดฐเตเด•เตเด• เดŽเดฒเตเดฒเดพเด‚ เดชเตเดคเดฟเดฏ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต

เดŽเดจเตเดจเดพเตฝ เด…เดคเต‡ เดธเดฎเดฏเด‚, เดŽเด‚เดตเดฟเดธเดฟเดธเดฟเด•เตเด•เต เดจเดจเตเดฆเดฟ, เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดตเดฒเดฟเดชเตเดชเด‚ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดฐเดฃเตเดŸเตเดคเดตเดฃ เดตเตผเดฆเตเดงเดฟเด•เตเด•เตเด‚! 1K เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เด•เดพเดฐเดฃเด‚ +10M เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเตเดŸเต† เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดณเดฐเต† เด†เดตเตผเดคเตเดคเดจเดฎเดพเดฃเต...

เดตเต†เดŸเตเดŸเดฟเดšเตเดšเตเดฐเตเด•เตเด•เตเด• dst

เดฎเตเดดเตเดตเตป เดŸเดพเดฌเตโ€Œเดฒเต†เดฑเตเดฑเตเด‚ เดตเดณเดฐเต† เดตเดฟเดฒเด•เตเดฑเดžเตเดž เดฐเต€เดคเดฟเดฏเดฟเตฝ เดตเตƒเดคเตเดคเดฟเดฏเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เด•เต‚เดŸเตเดคเตฝ เดชเดฐเดฟเดšเดฏเดธเดฎเตเดชเดจเตเดจเดจเดพเดฏ เด’เดฐเต เดกเต†เดตเดฒเดชเตเดชเตผเด•เตเด•เต เด…เดฑเดฟเดฏเดพเด‚:

  • เดฎเดพเดฏเตเด•เตเด•เดพเตป (TRUNCATE) เดฎเตเดดเตเดตเตป เดชเดŸเตเดŸเดฟเด•เดฏเตเด‚
  • เดคเดฟเดฐเตเด•เตเด• เดŽเดฒเตเดฒเดพเด‚ เดชเตเดคเดฟเดฏ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต

เดฐเต€เดคเดฟ เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฃเต, เดšเดฟเดฒเดชเตเดชเต‹เตพ เดคเดฟเด•เดšเตเดšเตเด‚ เดฌเดพเดงเด•เดฎเดพเดฃเต, เดชเด•เตเดทเต‡ เด’เดฐเต เดชเตเดฐเดถเตโ€ŒเดจเดฎเตเดฃเตเดŸเต... เดžเด™เตเด™เตพ เดตเดณเดฐเต†เด•เตเด•เดพเดฒเด‚ 1M เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดšเต‡เตผเด•เตเด•เตเด‚, เด…เดคเดฟเดจเดพเตฝ เดˆ เดธเดฎเดฏเดฎเดคเตเดฐเดฏเตเด‚ เดŸเต‡เดฌเดฟเตพ เดถเต‚เดจเตเดฏเดฎเดพเดฏเดฟ เดตเดฏเตเด•เตเด•เดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดฏเดฟเดฒเตเดฒ (เด’เดฑเตเดฑ เด‡เดŸเดชเดพเดŸเดฟเตฝ เดชเตŠเดคเดฟเดฏเดพเดคเต† เดธเด‚เดญเดตเดฟเด•เตเด•เตเด‚).

เด…เดคเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต:

  • เดžเด™เตเด™เตพ เดคเตเดŸเด™เตเด™เตเด•เดฏเดพเดฃเต เดฆเต€เตผเด˜เด•เดพเดฒ เด‡เดŸเดชเดพเดŸเต
  • TRUNCATE เดšเตเดฎเดคเตเดคเตเดจเตเดจเต เดŽเด•เตเดธเตเด•เตเดฒเต‚เดธเต€เดตเต เด†เด•เตเดธเดธเต- เดคเดŸเดฏเตเดจเตเดจเต
  • เดžเด™เตเด™เตพ เดฆเต€เตผเด˜เดจเต‡เดฐเด‚ เดšเต‡เตผเด•เตเด•เตฝ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดˆ เดธเดฎเดฏเดคเตเดคเต เดฎเดฑเตเดฑเต†เดฒเตเดฒเดพเดตเดฐเตเด‚ เดชเต‹เดฒเตเด‚ เด•เดดเดฟเดฏเดฟเดฒเตเดฒ SELECT

เดŽเดจเตเดคเต‹ เด•เตเดดเดชเตเดชเดฎเดฟเดฒเตเดฒ...

เดชเดŸเตเดŸเดฟเด• เดฎเดพเดฑเตเดฑเตเด•... เดชเตเดจเตผเดจเดพเดฎเด•เดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเด•... / เดกเตเดฐเต‹เดชเตเดชเต เดŸเต‡เดฌเดฟเตพ...

เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดŽเดฒเตเดฒเดพเด‚ เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด•, เดคเตเดŸเตผเดจเตเดจเต เดชเดดเดฏเดคเดฟเดจเต เดชเด•เดฐเด‚ เดชเต‡เดฐเตเดฎเดพเดฑเตเดฑเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด’เดฐเต เดฌเดฆเตฝ. เด•เตเดฑเดšเตเดšเต เดฎเต‹เดถเด‚ เดšเต†เดฑเดฟเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เตพ:

  • เด‡เดชเตเดชเต‹เดดเตเด‚ เดŽเด•เตเดธเตเด•เตเดฒเต‚เดธเต€เดตเต เด†เด•เตเดธเดธเต, เดธเดฎเดฏเด‚ เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เด•เตเดฑเดตเดพเดฃเต†เด™เตเด•เดฟเดฒเตเด‚
  • เดˆ เดชเดŸเตเดŸเดฟเด•เดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เด…เดจเตเดตเต‡เดทเดฃ เดชเตเดฒเดพเดจเตเด•เดณเตเด‚/ เดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเด•เตเด•เดฃเด•เตเด•เตเด•เดณเตเด‚ เดชเตเดจเดƒเดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดตเดฟเดถเด•เดฒเดจเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต
  • เดŽเดฒเตเดฒเดพ เดตเดฟเดฆเต‡เดถ เด•เต€เด•เดณเตเด‚ เดคเด•เตผเดจเตเดจเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (FK) เดฎเต‡เดถเดฏเดฟเดฒเต‡เด•เตเด•เต

เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเดšเตเดš เดธเตˆเดฎเตบ เดฑเดฟเด—เตโ€Œเดธเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต WIP เดชเดพเดšเตเดšเต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต ALTERเดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเด•เตเด•เดฃเด•เตเด•เตเด•เดณเตเด‚ เดŽเดซเตโ€Œเด•เต†เดฏเตเด‚ เดธเตเดชเตผเดถเดฟเด•เตเด•เดพเดคเต† เดซเดฏเตฝ เดคเดฒเดคเตเดคเดฟเตฝ เดŸเต‡เดฌเดฟเตพ เดฌเต‹เดกเดฟ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚, เดชเด•เตเดทเต‡ เด•เต‹เดฑเด‚ เดถเต‡เด–เดฐเดฟเดšเตเดšเดฟเดฒเตเดฒ.

เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•, เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•, เดšเต‡เตผเด•เตเด•เตเด•

เด…เดคเดฟเดจเดพเตฝ, เดฎเต‚เดจเตเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเดŸเต† เดจเต‹เตบ-เดฌเตเดฒเต‹เด•เตเด•เดฟเด‚เด—เต เด“เดชเตเดทเดจเดฟเตฝ เดžเด™เตเด™เตพ เดธเตเดฅเดฟเดฐเดคเดพเดฎเดธเดฎเดพเด•เตเด•เตเดจเตเดจเต. เดเดคเดพเดฃเตเดŸเต เดฎเต‚เดจเตเดจเต... เด‡เดคเต เดŽเด™เตเด™เดจเต† เดเดฑเตเดฑเดตเตเด‚ เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฏเดฟ เดšเต†เดฏเตเดฏเดพเด‚?

-- ะฒัะต ะดะตะปะฐะตะผ ะฒ ั€ะฐะผะบะฐั… ั‚ั€ะฐะฝะทะฐะบั†ะธะธ, ั‡ั‚ะพะฑั‹ ะฝะธะบั‚ะพ ะฝะต ะฒะธะดะตะป "ะฟั€ะพะผะตะถัƒั‚ะพั‡ะฝั‹ั…" ัะพัั‚ะพัะฝะธะน
BEGIN;

-- ัะพะทะดะฐะตะผ ะฒั€ะตะผะตะฝะฝัƒัŽ ั‚ะฐะฑะปะธั†ัƒ ั ะธะผะฟะพั€ั‚ะธั€ัƒะตะผั‹ะผะธ ะดะฐะฝะฝั‹ะผะธ
CREATE TEMPORARY TABLE tmp(
  LIKE dst INCLUDING INDEXES -- ะฟะพ ะพะฑั€ะฐะทัƒ ะธ ะฟะพะดะพะฑะธัŽ, ะฒะผะตัั‚ะต ั ะธะฝะดะตะบัะฐะผะธ
) ON COMMIT DROP; -- ะทะฐ ั€ะฐะผะบะฐะผะธ ั‚ั€ะฐะฝะทะฐะบั†ะธะธ ะพะฝะฐ ะฝะฐะผ ะฝะต ะฝัƒะถะฝะฐ

-- ะฑั‹ัั‚ั€ะพ-ะฑั‹ัั‚ั€ะพ ะฒะปะธะฒะฐะตะผ ะฝะพะฒั‹ะน ะพะฑั€ะฐะท ั‡ะตั€ะตะท COPY
COPY tmp FROM STDIN;
-- ...
-- .

-- ัƒะดะฐะปัะตะผ ะพั‚ััƒั‚ัั‚ะฒัƒัŽั‰ะธะต
DELETE FROM
  dst D
USING
  dst X
LEFT JOIN
  tmp Y
    USING(pk1, pk2) -- ะฟะพะปั ะฟะตั€ะฒะธั‡ะฝะพะณะพ ะบะปัŽั‡ะฐ
WHERE
  (D.pk1, D.pk2) = (X.pk1, X.pk2) AND
  Y IS NOT DISTINCT FROM NULL; -- "ะฐะฝั‚ะธะดะถะพะนะฝ"

-- ะพะฑะฝะพะฒะปัะตะผ ะพัั‚ะฐะฒัˆะธะตัั
UPDATE
  dst D
SET
  (f1, f2, f3) = (T.f1, T.f2, T.f3)
FROM
  tmp T
WHERE
  (D.pk1, D.pk2) = (T.pk1, T.pk2) AND
  (D.f1, D.f2, D.f3) IS DISTINCT FROM (T.f1, T.f2, T.f3); -- ะฝะตะทะฐั‡ะตะผ ะพะฑะฝะพะฒะปัั‚ัŒ ัะพะฒะฟะฐะดะฐัŽั‰ะธะต

-- ะฒัั‚ะฐะฒะปัะตะผ ะพั‚ััƒั‚ัั‚ะฒัƒัŽั‰ะธะต
INSERT INTO
  dst
SELECT
  T.*
FROM
  tmp T
LEFT JOIN
  dst D
    USING(pk1, pk2)
WHERE
  D IS NOT DISTINCT FROM NULL;

COMMIT;

3.2 เดชเต‹เดธเตเดฑเตเดฑเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเด•

เด…เดคเต‡ KLADR-เตฝ, เดฎเดพเดฑเตเดฑเดฟเดฏ เดŽเดฒเตเดฒเดพ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเตเด‚ เดชเต‹เดธเตเดฑเตเดฑเต-เดชเตเดฐเต‹เดธเดธเดฟเด‚เด—เดฟเดฒเต‚เดŸเต† เด…เดงเดฟเด•เดฎเดพเดฏเดฟ เดฑเตบ เดšเต†เดฏเตเดฏเดฃเด‚ - เดจเต‹เตผเดฎเดฒเตˆเดธเตเดกเต, เด•เต€เดตเต‡เดกเตเด•เตพ เดนเตˆเดฒเตˆเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฏ เด˜เดŸเดจเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดšเตเดฐเตเด•เตเด•เตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚. เดชเด•เตเดทเต† เดจเดฟเดจเด•เตเด•เต เดŽเด™เตเด™เดจเต† เด…เดฑเดฟเดฏเดพเด‚... เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดŽเดจเตเดคเดพเดฃเต เดฎเดพเดฑเดฟเดฏเดคเตเดธเดฟเตปเด•เตเดฐเตŠเดฃเตˆเดธเต‡เดทเตป เด•เต‹เดกเต เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเด•เตเด•เดพเดคเต†, เด…เดคเต เดธเตเดชเตผเดถเดฟเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต†?

เดธเดฎเดจเตเดตเดฏ เดธเดฎเดฏเดคเตเดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดธเดธเตเดธเดฟเดจเต เดฎเดพเดคเตเดฐเดฎเต‡ เดŽเดดเตเดคเตเดคเต เด†เด•เตเดธเดธเต เด‰เดณเตเดณเต‚ เดŽเด™เตเด•เดฟเตฝ, เดžเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดŽเดฒเตเดฒเดพ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเด‚ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดŸเตเดฐเดฟเด—เตผ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚:

-- ั†ะตะปะตะฒั‹ะต ั‚ะฐะฑะปะธั†ั‹
CREATE TABLE kladr(...);
CREATE TABLE kladr_house(...);

-- ั‚ะฐะฑะปะธั†ั‹ ั ะธัั‚ะพั€ะธะตะน ะธะทะผะตะฝะตะฝะธะน
CREATE TABLE kladr$log(
  ro kladr, -- ั‚ัƒั‚ ะปะตะถะฐั‚ ั†ะตะปั‹ะต ะพะฑั€ะฐะทั‹ ะทะฐะฟะธัะตะน ัั‚ะฐั€ะพะน/ะฝะพะฒะพะน
  rn kladr
);

CREATE TABLE kladr_house$log(
  ro kladr_house,
  rn kladr_house
);

-- ะพะฑั‰ะฐั ั„ัƒะฝะบั†ะธั ะปะพะณะธั€ะพะฒะฐะฝะธั ะธะทะผะตะฝะตะฝะธะน
CREATE OR REPLACE FUNCTION diff$log() RETURNS trigger AS $$
DECLARE
  dst varchar = TG_TABLE_NAME || '$log';
  stmt text = '';
BEGIN
  -- ะฟั€ะพะฒะตั€ัะตะผ ะฝะตะพะฑั…ะพะดะธะผะพัั‚ัŒ ะปะพะณะณะธั€ะพะฒะฐะฝะธั ะฟั€ะธ ะพะฑะฝะพะฒะปะตะฝะธะธ ะทะฐะฟะธัะธ
  IF TG_OP = 'UPDATE' THEN
    IF NEW IS NOT DISTINCT FROM OLD THEN
      RETURN NEW;
    END IF;
  END IF;
  -- ัะพะทะดะฐะตะผ ะทะฐะฟะธััŒ ะปะพะณะฐ
  stmt = 'INSERT INTO ' || dst::text || '(ro,rn)VALUES(';
  CASE TG_OP
    WHEN 'INSERT' THEN
      EXECUTE stmt || 'NULL,$1)' USING NEW;
    WHEN 'UPDATE' THEN
      EXECUTE stmt || '$1,$2)' USING OLD, NEW;
    WHEN 'DELETE' THEN
      EXECUTE stmt || '$1,NULL)' USING OLD;
  END CASE;
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เดธเดฎเดจเตเดตเดฏเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดŸเตเดฐเดฟเด—เดฑเตเด•เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดต เดตเดดเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เตเด• ALTER TABLE ... ENABLE TRIGGER ...):

CREATE TRIGGER log
  AFTER INSERT OR UPDATE OR DELETE
  ON kladr
    FOR EACH ROW
      EXECUTE PROCEDURE diff$log();

CREATE TRIGGER log
  AFTER INSERT OR UPDATE OR DELETE
  ON kladr_house
    FOR EACH ROW
      EXECUTE PROCEDURE diff$log();

เดคเตเดŸเตผเดจเตเดจเต เดฒเต‹เด—เต เดŸเต‡เดฌเดฟเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเด‚ เดžเด™เตเด™เตพ เดถเดพเดจเตเดคเดฎเดพเดฏเดฟ เดŽเด•เตโ€Œเดธเตโ€ŒเดŸเตเดฐเดพเด•เตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด…เดงเดฟเด• เดนเดพเตปเดกเตโ€Œเดฒเดฑเตเด•เดณเดฟเดฒเต‚เดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

3.3 เดฒเดฟเด™เตเด•เตเดกเต เดธเต†เดฑเตเดฑเตเด•เตพ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเตปเตเดฑเต†เดฏเตเด‚ เดฒเด•เตเดทเตเดฏเดธเตเดฅเดพเดจเดคเตเดคเดฟเตปเตเดฑเต†เดฏเตเด‚ เดกเดพเดฑเตเดฑเดพ เด˜เดŸเดจเด•เตพ เด’เดฐเตเดชเต‹เดฒเต† เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดžเด™เตเด™เตพ เดฎเตเด•เดณเดฟเตฝ เดชเดฑเดžเตเดžเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เต‡เดธเตเด•เตพ เดชเดฐเดฟเด—เดฃเดฟเดšเตเดšเต. เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดฌเดพเดนเตเดฏ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด…เดชเตโ€Œเดฒเต‹เดกเดฟเดจเต เดจเดฎเตเดฎเตเดŸเต† เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต† เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เด˜เดŸเดจเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏ เด’เดฐเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเต เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเตเด‚?

เด•เตเดฒเดฏเตปเตเดฑเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด…เดตเดฐเตเดŸเต† เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดธเด‚เดญเดฐเดฃเด‚ เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เดพเด‚, เด•เตเดฒเดพเดธเดฟเด•เต "เดฎเดจเดฟ-เดŸเต-เดตเตบ" เด“เดชเตเดทเตป:

CREATE TABLE client(
  client_id
    serial
      PRIMARY KEY
, inn
    varchar
      UNIQUE
, name
    varchar
);

CREATE TABLE invoice(
  invoice_id
    serial
      PRIMARY KEY
, client_id
    integer
      REFERENCES client(client_id)
, number
    varchar
, dt
    date
, sum
    numeric(32,2)
);

เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดฌเดพเดนเตเดฏ เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเต—เตบเดฒเต‹เดกเต "เดŽเดฒเตเดฒเดพเด‚ เด’เดฐเต" เดŽเดจเตเดจ เดฐเต‚เดชเดคเตเดคเดฟเตฝ เดจเดฎเตเดฎเดฟเดฒเต‡เด•เตเด•เต เดตเดฐเตเดจเตเดจเต:

CREATE TEMPORARY TABLE invoice_import(
  client_inn
    varchar
, client_name
    varchar
, invoice_number
    varchar
, invoice_dt
    date
, invoice_sum
    numeric(32,2)
);

เดตเตเดฏเด•เตเดคเดฎเดพเดฏเตเด‚, เดˆ เดชเดคเดฟเดชเตเดชเดฟเตฝ เด‰เดชเดญเต‹เด•เตเดคเตƒ เดกเดพเดฑเตเดฑ เดกเตเดฏเต‚เดชเตเดฒเดฟเด•เตเด•เต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเด‚, เดชเตเดฐเดงเดพเดจ เดฑเต†เด•เตเด•เต‹เตผเดกเต "เด…เด•เตเด•เต—เดฃเตเดŸเต" เด†เดฃเต:

0123456789;ะ’ะฐัั;A-01;2020-03-16;1000.00
9876543210;ะŸะตั‚ั;A-02;2020-03-16;666.00
0123456789;ะ’ะฐัั;B-03;2020-03-16;9999.00

เดฎเต‹เดกเดฒเดฟเดจเดพเดฏเดฟ, เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เดŸเต†เดธเตเดฑเตเดฑเต เดกเดพเดฑเตเดฑ เดšเต‡เตผเด•เตเด•เตเด‚, เดชเด•เตเดทเต‡ เด“เตผเด•เตเด•เตเด• - COPY เด•เต‚เดŸเตเดคเตฝ เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดฎเดพเดฏเดฟ!

INSERT INTO invoice_import
VALUES
  ('0123456789', 'ะ’ะฐัั', 'A-01', '2020-03-16', 1000.00)
, ('9876543210', 'ะŸะตั‚ั', 'A-02', '2020-03-16', 666.00)
, ('0123456789', 'ะ’ะฐัั', 'B-03', '2020-03-16', 9999.00);

เด†เดฆเตเดฏเด‚, เดจเดฎเตเดฎเตเดŸเต† "เดตเดธเตเดคเตเดคเด•เตพ" เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เตเดจเตเดจ "เดตเต†เดŸเตเดŸเดฒเตเด•เตพ" เดนเตˆเดฒเตˆเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเด‚. เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด‡เตปเดตเต‹เดฏเตโ€Œเดธเตเด•เตพ เด‰เดชเดญเต‹เด•เตเดคเดพเด•เตเด•เดณเต† เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เตเดจเตเดจเต:

CREATE TEMPORARY TABLE client_import AS
SELECT DISTINCT ON(client_inn)
-- ะผะพะถะฝะพ ะฟั€ะพัั‚ะพ SELECT DISTINCT, ะตัะปะธ ะดะฐะฝะฝั‹ะต ะทะฐะฒะตะดะพะผะพ ะฝะตะฟั€ะพั‚ะธะฒะพั€ะตั‡ะธะฒั‹
  client_inn inn
, client_name "name"
FROM
  invoice_import;

เด‰เดชเดญเต‹เด•เตเดคเตƒ เดเดกเดฟเด•เดณเตเดฎเดพเดฏเดฟ เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เตพ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เดˆ เดเดกเตปเตเดฑเดฟเดซเดฏเดฑเตเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด•เดฏเต‹ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดจเดฎเตเด•เตเด•เต เด…เดตเดฏเตเด•เตเด•เต เด•เต€เดดเดฟเตฝ เดซเต€เตฝเดกเตเด•เตพ เดšเต‡เตผเด•เตเด•เดพเด‚:

ALTER TABLE invoice_import ADD COLUMN client_id integer;
ALTER TABLE client_import ADD COLUMN client_id integer;

เดฎเตเด•เดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดŸเต‡เดฌเดฟเตพ เดธเดฟเตปเด•เตเดฐเตŠเดฃเตˆเดธเต‡เดทเตป เดฐเต€เดคเดฟ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดญเต‡เดฆเด—เดคเดฟเดฏเต‹เดŸเต† เดจเดฎเตเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ - เดžเด™เตเด™เตพ เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดŸเต‡เดฌเดฟเดณเดฟเตฝ เด’เดจเตเดจเตเด‚ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเต‹ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดžเด™เตเด™เตพ เด•เตเดฒเดฏเตปเตเดฑเตเด•เดณเต† "เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเด•เตเด•เดพเตป เดฎเดพเดคเตเดฐเด‚" เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต:

-- ะฟั€ะพัั‚ะฐะฒะปัะตะผ ะฒ ั‚ะฐะฑะปะธั†ะต ะธะผะฟะพั€ั‚ะฐ ID ัƒะถะต ััƒั‰ะตัั‚ะฒัƒัŽั‰ะธั… ะทะฐะฟะธัะตะน
UPDATE
  client_import T
SET
  client_id = D.client_id
FROM
  client D
WHERE
  T.inn = D.inn; -- unique key

-- ะฒัั‚ะฐะฒะปัะตะผ ะพั‚ััƒั‚ัั‚ะฒะพะฒะฐะฒัˆะธะต ะทะฐะฟะธัะธ ะธ ะฟั€ะพัั‚ะฐะฒะปัะตะผ ะธั… ID
WITH ins AS (
  INSERT INTO client(
    inn
  , name
  )
  SELECT
    inn
  , name
  FROM
    client_import
  WHERE
    client_id IS NULL -- ะตัะปะธ ID ะฝะต ะฟั€ะพัั‚ะฐะฒะธะปัั
  RETURNING *
)
UPDATE
  client_import T
SET
  client_id = D.client_id
FROM
  ins D
WHERE
  T.inn = D.inn; -- unique key

-- ะฟั€ะพัั‚ะฐะฒะปัะตะผ ID ะบะปะธะตะฝั‚ะพะฒ ัƒ ะทะฐะฟะธัะตะน ัั‡ะตั‚ะพะฒ
UPDATE
  invoice_import T
SET
  client_id = D.client_id
FROM
  client_import D
WHERE
  T.client_inn = D.inn; -- ะฟั€ะธะบะปะฐะดะฝะพะน ะบะปัŽั‡

เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ, เดŽเดฒเตเดฒเดพเด‚ เด…เด•เดคเตเดคเตเดฃเตเดŸเต invoice_import เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพ เด•เต‹เตบเดŸเดพเด•เตเดฑเตเดฑเต เดซเต€เตฝเดกเต เดชเต‚เดฐเดฟเดชเตเดชเดฟเดšเตเดšเต client_id, เดžเด™เตเด™เตพ เด‡เตปเดตเต‹เดฏเตเดธเต เดšเต‡เตผเด•เตเด•เตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•