DBA: āĻĻāĻ•ā§āĻˇāĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻ†āĻŽāĻĻāĻžāĻ¨āĻŋ āĻ¸āĻ‚āĻ—āĻ āĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨

āĻŦāĻĄāĻŧ āĻĄā§‡āĻŸāĻž āĻ¸ā§‡āĻŸā§‡āĻ° āĻœāĻŸāĻŋāĻ˛ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ (āĻ­āĻŋāĻ¨ā§āĻ¨ ETL āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž: āĻ†āĻŽāĻĻāĻžāĻ¨āĻŋ, āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻ‰āĻ¤ā§āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœā§‡āĻļāĻ¨) āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€āĻ­āĻžāĻŦā§‡ "āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻŦā§‡āĻ¨" āĻāĻŦāĻ‚ āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻĻā§āĻ°ā§āĻ¤ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°ā§āĻ¨ āĻŦāĻŋāĻļāĻžāĻ˛ āĻ•āĻŋāĻ›ā§

āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ•āĻžāĻœ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ‡ āĻŽāĻ¤ āĻ•āĻŋāĻ›ā§ āĻļā§‹āĻ¨āĻžāĻ¯āĻŧ: "āĻāĻ–āĻžāĻ¨ā§‡āĻ‡ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻŋāĻ‚ āĻŦāĻŋāĻ­āĻžāĻ— āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻŦā§āĻ¯āĻžāĻ‚āĻ• āĻĨā§‡āĻ•ā§‡ āĻ†āĻ¨āĻ˛ā§‹āĻĄ āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ…āĻ°ā§āĻĨāĻĒā§āĻ°āĻĻāĻžāĻ¨, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĻā§āĻ°ā§āĻ¤ āĻ“āĻ¯āĻŧā§‡āĻŦāĻ¸āĻžāĻ‡āĻŸā§‡ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸā§‡ āĻ˛āĻŋāĻ™ā§āĻ• āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤"

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻ–āĻ¨ āĻāĻ‡ "āĻ•āĻŋāĻ›ā§" āĻāĻ° āĻ­āĻ˛āĻŋāĻ‰āĻŽ āĻļāĻ¤ āĻļāĻ¤ āĻŽā§‡āĻ—āĻžāĻŦāĻžāĻ‡āĻŸā§‡ āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ āĻ•āĻ°āĻž āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻŸāĻŋāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ 24x7 āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ¤āĻ–āĻ¨ āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻĒāĻžāĻ°ā§āĻļā§āĻŦ āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻ¯āĻŧ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻœā§€āĻŦāĻ¨āĻ•ā§‡ āĻ§ā§āĻŦāĻ‚āĻ¸ āĻ•āĻ°āĻŦā§‡āĨ¤
DBA: āĻĻāĻ•ā§āĻˇāĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻ†āĻŽāĻĻāĻžāĻ¨āĻŋ āĻ¸āĻ‚āĻ—āĻ āĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨
PostgreSQL āĻ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽā§‹āĻ•āĻžāĻŦāĻŋāĻ˛āĻž āĻ•āĻ°āĻ¤ā§‡ (āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻŸāĻŋāĻ¤ā§‡ āĻ¨āĻ¯āĻŧ), āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋāĻ›ā§ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ‚ āĻ•āĻŽ āĻ¸āĻŽā§āĻĒāĻĻ āĻ–āĻ°āĻš āĻ¸āĻš āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻŦā§‡āĨ¤

1. āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ āĻœāĻžāĻšāĻžāĻœ?

āĻĒā§āĻ°āĻĨāĻŽā§‡, āĻ†āĻ¸ā§āĻ¨ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ• āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž "āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž" āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¸ā§‡āĻ‡ āĻĄā§‡āĻŸāĻž āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋā§ˇ

1.1āĨ¤ āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻŸā§‡āĻŦāĻŋāĻ˛ (āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻŸā§‡āĻŦāĻŋāĻ˛)

āĻ¨ā§€āĻ¤āĻŋāĻ—āĻ¤āĻ­āĻžāĻŦā§‡, PostgreSQL-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻ¸āĻžāĻ°āĻŖāĻŋ āĻ…āĻ¨ā§āĻ¯ āĻ¯ā§‡ āĻ•ā§‹āĻ¨ā§‹āĻŸāĻŋāĻ° āĻŽāĻ¤ā§‹āĻ‡āĨ¤ āĻ¤āĻžāĻ‡ āĻ•ā§āĻ¸āĻ‚āĻ¸ā§āĻ•āĻžāĻ° āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°ā§‡ "āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¯āĻž āĻ•āĻŋāĻ›ā§ āĻ†āĻ›ā§‡ āĻ¤āĻž āĻ•ā§‡āĻŦāĻ˛ āĻ¸ā§āĻŽā§ƒāĻ¤āĻŋāĻ¤ā§‡ āĻ¸āĻžā§āĻšāĻŋāĻ¤, āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻļā§‡āĻˇ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡". āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻŦā§‡āĻļ āĻ•āĻŋāĻ›ā§ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯āĻ“ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§‹āĻ—ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ "āĻ¨ā§‡āĻŽāĻ¸ā§āĻĒā§‡āĻ¸"

āĻ¯āĻĻāĻŋ āĻĻā§āĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻāĻ•āĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§‡ CREATE TABLE x, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ•ā§‡āĻ‰ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻĒāĻžāĻŦā§‡ āĻ…-āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ°āĻ¤āĻž āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻŦāĻ¸ā§āĻ¤ā§āĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ‰āĻ­āĻ¯āĻŧ āĻšā§‡āĻˇā§āĻŸāĻž āĻ¯āĻĻāĻŋ āĻŽā§ƒāĻ¤ā§āĻ¯ā§āĻĻāĻ¨ā§āĻĄ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻ¤ā§‡ CREATE TEMPORARY TABLE x, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ‰āĻ­āĻ¯āĻŧāĻ‡ āĻāĻŸāĻŋ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ•āĻ°āĻŦā§‡, āĻāĻŦāĻ‚ āĻ¸āĻŦāĻžāĻ‡ āĻĒāĻžāĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻĒāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ•āĻŋāĻ›ā§ āĻŽāĻŋāĻ˛ āĻĨāĻžāĻ•āĻŦā§‡ āĻ¨āĻžāĨ¤

āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ "āĻ†āĻ¤ā§āĻŽ-āĻ§ā§āĻŦāĻ‚āĻ¸"

āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ˛ā§‡, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ‡ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ DROP TABLE x āĻ›āĻžāĻĄāĻŧāĻž āĻ•ā§‹āĻ¨ āĻ˛āĻžāĻ­ āĻ¨ā§‡āĻ‡...

āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ›ā§‡āĻ¨ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻŽā§‹āĻĄā§‡ pgbouncer, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻĨāĻžāĻ•ā§‡ āĻ¯ā§‡ āĻāĻ‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻŸāĻŋ āĻāĻ–āĻ¨āĻ“ āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ, āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ¤ā§‡ āĻāĻ‡ āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻŸā§‡āĻŦāĻŋāĻ˛āĻŸāĻŋ āĻāĻ–āĻ¨āĻ“ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨āĨ¤

āĻ¤āĻžāĻ‡, āĻĒāĻŋāĻœāĻŋāĻŦāĻžāĻ‰āĻ¨ā§āĻ¸āĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻĨā§‡āĻ•ā§‡ āĻāĻŸāĻŋ āĻ†āĻŦāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻŦā§‡āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻŦāĻžāĻ§āĻž āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ CREATE TEMPORARY TABLE IF NOT EXISTS x.

āĻ¸āĻ¤ā§āĻ¯, āĻ¯āĻžāĻ‡āĻšā§‹āĻ• āĻāĻŸāĻŋ āĻ¨āĻž āĻ•āĻ°āĻžāĻ‡ āĻ­āĻžāĻ˛, āĻ•āĻžāĻ°āĻŖ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ "āĻ†āĻ—ā§‡āĻ° āĻŽāĻžāĻ˛āĻŋāĻ•" āĻĨā§‡āĻ•ā§‡ āĻ…āĻŦāĻļāĻŋāĻˇā§āĻŸ āĻĄā§‡āĻŸāĻž "āĻšāĻ āĻžā§Ž" āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŸāĻŋ āĻĒāĻĄāĻŧāĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŸāĻŋ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ¤āĻž āĻĻā§‡āĻ–āĻ¤ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ­āĻžāĻ˛ ON COMMIT DROP - āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ˛ā§‡, āĻŸā§‡āĻŦāĻŋāĻ˛āĻŸāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻŽā§āĻ›ā§‡ āĻ¯āĻžāĻŦā§‡āĨ¤

āĻ…-āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ

āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ¤āĻžāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻ‚āĻ¯ā§‹āĻ—ā§‡āĻ° āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ—āĻ¤, āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻŋ āĻĄā§‡āĻŸāĻžāĻ° āĻĄāĻŦāĻ˛ āĻ°ā§‡āĻ•āĻ°ā§āĻĄāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻĻā§‚āĻ° āĻ•āĻ°ā§‡ āĻšāĻŋāĻĒ + āĻ“āĻ¯āĻŧāĻžāĻ˛-āĻ, āĻ¤āĻžāĻ‡ āĻāĻ¤ā§‡ āĻĸā§‹āĻ•āĻžāĻ¨/āĻ†āĻĒāĻĄā§‡āĻŸ/āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻĻā§āĻ°ā§āĻ¤āĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻāĻ–āĻ¨āĻ“ āĻāĻ•āĻŸāĻŋ "āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ" āĻŸā§‡āĻŦāĻŋāĻ˛, āĻ¤āĻžāĻ‡ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ¤ā§‡āĻ“ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ…āĻ¨ā§āĻ¤āĻ¤ āĻ†āĻĒāĻžāĻ¤āĻ¤, āĻ¯āĻĻāĻŋāĻ“ āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻĒā§āĻ¯āĻžāĻšāĻŸāĻŋ āĻĻā§€āĻ°ā§āĻ˜āĻĻāĻŋāĻ¨ āĻ§āĻ°ā§‡ āĻĒā§āĻ°āĻšāĻžāĻ°āĻŋāĻ¤ āĻšāĻšā§āĻ›ā§‡āĨ¤

1.2āĨ¤ āĻ†āĻ¨āĻ˛āĻ— āĻ•āĻ°āĻž āĻŸā§‡āĻŦāĻŋāĻ˛

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻŋ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻ•āĻŋāĻ›ā§ āĻ•āĻˇā§āĻŸāĻ•āĻ° ETL āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĨāĻžāĻ•ā§‡ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ–āĻ¨āĻ“ āĻ†āĻ›ā§‡ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻŽā§‹āĻĄā§‡ pgbouncer? ..

āĻŦāĻž āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻŦāĻžāĻš āĻāĻ¤ āĻŦāĻĄāĻŧ āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§‹āĻ—ā§‡ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻŦā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ‰āĻ‡āĻĨ āĻ¨ā§‡āĻ‡ āĻāĻ•āĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĨā§‡āĻ•ā§‡ (āĻĒāĻĄāĻŧā§āĻ¨, āĻ¸āĻŋāĻĒāĻŋāĻ‡āĻ‰ āĻĒā§āĻ°āĻ¤āĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž)? ..

āĻ¨āĻžāĻ•āĻŋ āĻ•āĻŋāĻ›ā§ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻšāĻ˛āĻ›ā§‡ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸āĻ­āĻžāĻŦā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ¸āĻ‚āĻ¯ā§‹āĻ—ā§‡? ..

āĻāĻ–āĻžāĻ¨ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻ†āĻ›ā§‡ - āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨. āĻĒā§āĻ¨, āĻšā§āĻ¯āĻžāĻāĨ¤ āĻāĻŸāĻžāĻ‡:

  • āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ• āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹ āĻ¨āĻžāĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ "āĻ†āĻŽāĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ°" āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¯āĻžāĻ¤ā§‡ āĻ•āĻžāĻ°āĻ“ āĻ¸āĻžāĻĨā§‡ āĻ›ā§‡āĻĻ āĻ¨āĻž āĻšāĻ¯āĻŧ
  • āĻ¨āĻŋāĻ°ā§āĻ¯āĻžāĻ¸: āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻ‰āĻ¤ā§āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻĒā§‚āĻ°ā§āĻŖ
  • āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°: āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤, āĻ•ā§€ āĻ˛āĻŋāĻ™ā§āĻ•āĻŋāĻ‚ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡
  • āĻŦā§‹āĻāĻž: āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻĸā§‡āĻ˛ā§‡
  • "āĻ†āĻŽāĻžāĻ°" āĻŸā§‡āĻŦāĻŋāĻ˛ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡

āĻāĻŦāĻ‚ āĻāĻ–āĻ¨ - āĻŽāĻ˛āĻŽ āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ›āĻŋāĨ¤ āĻ†āĻ¸āĻ˛ā§‡, PostgreSQL āĻ āĻ¸āĻŦ āĻ˛ā§‡āĻ–āĻž āĻĻā§āĻŦāĻžāĻ° āĻšāĻ¯āĻŧ - āĻ“āĻ¯āĻŧāĻžāĻ˛-āĻ āĻĒā§āĻ°āĻĨāĻŽ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻŸā§‡āĻŦāĻŋāĻ˛/āĻ¸ā§‚āĻšāĻ• āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¯āĻŧāĨ¤ āĻāĻ‡ āĻ¸āĻŦ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ ACID āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻŦāĻ‚ āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻ āĻŋāĻ• āĻ¤āĻĨā§āĻ¯ āĻĻā§ƒāĻļā§āĻ¯āĻŽāĻžāĻ¨āĻ¤āĻž COMMIT'āĻŦāĻžāĻĻāĻžāĻŽ āĻāĻŦāĻ‚ ROLLBACK'āĻ¨āĻžāĻ˛ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨āĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ‡ āĻĻāĻ°āĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡! āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°ā§‹ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ†āĻ›ā§‡ āĻšāĻ¯āĻŧ āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ āĻ¸āĻĢāĻ˛ āĻ›āĻŋāĻ˛ āĻŦāĻž āĻāĻŸāĻŋ āĻ›āĻŋāĻ˛ āĻ¨āĻžāĨ¤. āĻ•āĻ¤āĻ—ā§āĻ˛āĻŋ āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§€ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻšāĻŦā§‡ āĻ¤āĻž āĻŦāĻŋāĻŦā§‡āĻšā§āĻ¯ āĻ¨āĻ¯āĻŧ - āĻ†āĻŽāĻ°āĻž "āĻŽāĻžāĻ āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋ āĻšāĻžāĻ˛āĻŋāĻ¯āĻŧā§‡ āĻ¯ā§‡āĻ¤ā§‡" āĻ†āĻ—ā§āĻ°āĻšā§€ āĻ¨āĻ‡, āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ°ā§‡ āĻ¯āĻ–āĻ¨ āĻāĻŸāĻŋ āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ āĻ›āĻŋāĻ˛ āĻ¤āĻž āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ¨āĻ¯āĻŧāĨ¤

āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, PostgreSQL āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€āĻ°āĻž, 9.1 āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡, āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻœāĻŋāĻ¨āĻŋāĻ¸ āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§‡āĻ›ā§‡ āĻ†āĻ¨āĻ˛āĻ— āĻ•āĻ°āĻž āĻŸā§‡āĻŦāĻŋāĻ˛:

āĻāĻ‡ āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤ āĻĻāĻŋāĻ¯āĻŧā§‡, āĻŸā§‡āĻŦāĻŋāĻ˛āĻŸāĻŋ āĻ†āĻ¨āĻ˛āĻ—āĻĄ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ†āĻ¨āĻ˛āĻ— āĻ•āĻ°āĻž āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻ˛ā§‡āĻ–āĻž āĻĄā§‡āĻŸāĻž āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸āĻžāĻŽāĻ¨ā§‡āĻ° āĻ˛āĻ—ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž (āĻ…āĻ§ā§āĻ¯āĻžāĻ¯āĻŧ 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-values ​​(āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ•ā§€ āĻŽāĻžāĻ¨ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡), āĻ†āĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ LIKE target_table INCLUDING DEFAULTS. āĻ…āĻĨāĻŦāĻž āĻ¸āĻšāĻœāĻ­āĻžāĻŦā§‡ - LIKE target_table INCLUDING ALL — āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ, āĻ¸ā§‚āĻšā§€, āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž,...

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦā§āĻāĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ¨ āĻ¸ā§‚āĻšā§€ āĻ¸āĻš āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻ¸āĻžāĻ°āĻŖāĻŋ āĻ†āĻŽāĻĻāĻžāĻ¨āĻŋ āĻ•āĻ°ā§āĻ¨, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĄā§‡āĻŸāĻž āĻ˛ā§‹āĻĄ āĻšāĻ¤ā§‡ āĻŦā§‡āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻ—āĻŦā§‡āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°ā§‡āĻ¨, āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ¸ā§‚āĻšā§€āĻ—ā§āĻ˛āĻŋ āĻ°ā§‹āĻ˛ āĻ†āĻĒ āĻ•āĻ°ā§‡āĻ¨ - āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻ°ā§‡ āĻ¤āĻž āĻĻā§‡āĻ–ā§āĻ¨ pg_dump.

āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡ RTFM!

2. āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻ¯āĻŧ?

āĻ†āĻŽāĻžāĻ•ā§‡ āĻļā§āĻ§ā§ āĻŦāĻ˛āĻ¤ā§‡ āĻĻāĻŋāĻ¨ - āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨ COPY- "āĻĒā§āĻ¯āĻžāĻ•" āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻĒā§āĻ°āĻŦāĻžāĻš INSERT, āĻŽāĻžāĻā§‡ āĻŽāĻžāĻā§‡ āĻ¤ā§āĻŦāĻ°āĻŖ. āĻāĻŽāĻ¨āĻ•āĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ•-āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻŋāĻ¤ āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡āĻ“ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

3. āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž?

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ†āĻ¸ā§āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ­ā§‚āĻŽāĻŋāĻ•āĻžāĻŸāĻŋ āĻāĻ‡āĻ°āĻ•āĻŽ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĻāĻŋāĻ¨:

  • āĻ†āĻĒāĻ¨āĻžāĻ° āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻĄā§‡āĻŸāĻž āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ 1M āĻ°ā§‡āĻ•āĻ°ā§āĻĄ
  • āĻĒā§āĻ°āĻ¤āĻŋāĻĻāĻŋāĻ¨ āĻāĻ•āĻœāĻ¨ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ āĻžāĻ¯āĻŧ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ "āĻšāĻŋāĻ¤ā§āĻ°"
  • āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž āĻĨā§‡āĻ•ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻœāĻžāĻ¨ā§‡āĻ¨ āĻ¯ā§‡ 10K āĻāĻ° āĻŦā§‡āĻļāĻŋ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž

āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ˛āĻžāĻ¸āĻŋāĻ• āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ KLADR āĻŦā§‡āĻ¸ — āĻŽā§‹āĻŸ āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻ†āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¸āĻžāĻĒā§āĻ¤āĻžāĻšāĻŋāĻ• āĻ†āĻĒāĻ˛ā§‹āĻĄā§‡ āĻ–ā§āĻŦ āĻ•āĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¯āĻŧ (āĻŦāĻ¸āĻ¤āĻŋāĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨, āĻ°āĻžāĻ¸ā§āĻ¤āĻžāĻ° āĻ¸āĻ‚āĻŽāĻŋāĻļā§āĻ°āĻŖ, āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻĄāĻŧāĻŋāĻ° āĻšā§‡āĻšāĻžāĻ°āĻž) āĻāĻŽāĻ¨āĻ•āĻŋ āĻāĻ•āĻŸāĻŋ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻ¸ā§āĻ•ā§‡āĻ˛ā§‡āĨ¤

3.1āĨ¤ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ

āĻ¸āĻ°āĻ˛āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻ¸ā§āĻ¨ āĻŦāĻ˛āĻŋ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĄā§‡āĻŸāĻž āĻĒā§āĻ¨āĻ°ā§āĻ—āĻ āĻ¨ āĻ•āĻ°āĻžāĻ° āĻĻāĻ°āĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡ - āĻ•ā§‡āĻŦāĻ˛ āĻŸā§‡āĻŦāĻŋāĻ˛āĻŸāĻŋāĻ•ā§‡ āĻĒāĻ›āĻ¨ā§āĻĻāĻ¸āĻ‡ āĻ†āĻ•āĻžāĻ°ā§‡ āĻ†āĻ¨ā§āĻ¨, āĻāĻŸāĻŋ āĻšāĻ˛:

  • āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¯āĻž āĻ†āĻ° āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¨ā§‡āĻ‡
  • āĻšāĻžāĻ˛āĻ¨āĻžāĻ—āĻžāĻĻ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻāĻŦāĻ‚ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§
  • āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§‡āĻļ āĻ•āĻ°āĻž āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¯āĻž āĻāĻ–āĻ¨āĻ“ āĻ˜āĻŸā§‡āĻ¨āĻŋ

āĻ•ā§‡āĻ¨ āĻāĻ‡ āĻ•ā§āĻ°āĻŽā§‡ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤? āĻ•āĻžāĻ°āĻŖ āĻāĻ‡āĻ­āĻžāĻŦā§‡ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻ¸āĻ°ā§āĻŦāĻ¨āĻŋāĻŽā§āĻ¨ āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻĒāĻžāĻŦā§‡ (MVCC āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻŦā§‡āĻ¨!).

dst āĻĨā§‡āĻ•ā§‡ āĻŽā§āĻ›ā§āĻ¨

āĻ¨āĻž, āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ†āĻĒāĻ¨āĻŋ āĻŽāĻžāĻ¤ā§āĻ° āĻĻā§āĻŸāĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨:

  • āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ (DELETE) āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§
  • āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§‡āĻļ āĻ•āĻ°āĻž āĻ¨āĻ¤ā§āĻ¨ āĻ‡āĻŽā§‡āĻœ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŦ

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻ‡ āĻ¸āĻžāĻĨā§‡, MVCC āĻ•ā§‡ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ, āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻ āĻŋāĻ• āĻĻā§āĻŦāĻŋāĻ—ā§āĻŖ āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻĒāĻžāĻŦā§‡! 1K āĻ†āĻĒāĻĄā§‡āĻŸā§‡āĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻ¸āĻžāĻ°āĻŖā§€āĻ¤ā§‡ āĻ°ā§‡āĻ•āĻ°ā§āĻĄā§‡āĻ° +10M āĻ›āĻŦāĻŋ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ–ā§āĻŦāĻ‡ āĻ…āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ...

āĻŸā§āĻ°āĻžāĻ™ā§āĻ•ā§‡āĻŸ dst

āĻāĻ•āĻœāĻ¨ āĻ†āĻ°āĻ“ āĻ…āĻ­āĻŋāĻœā§āĻž āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€ āĻœāĻžāĻ¨ā§‡āĻ¨ āĻ¯ā§‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻŸā§āĻ¯āĻžāĻŦāĻ˛ā§‡āĻŸāĻŸāĻŋ āĻŦā§‡āĻļ āĻ¸āĻ¸ā§āĻ¤āĻžāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

  • āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°āĻž (TRUNCATE) āĻĒā§āĻ°ā§‹ āĻŸā§‡āĻŦāĻŋāĻ˛
  • āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§‡āĻļ āĻ•āĻ°āĻž āĻ¨āĻ¤ā§āĻ¨ āĻ‡āĻŽā§‡āĻœ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŦ

āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°, āĻ•āĻ–āĻ¨āĻ“ āĻ•āĻ–āĻ¨āĻ“ āĻŦā§‡āĻļ āĻĒā§āĻ°āĻ¯ā§‹āĻœā§āĻ¯, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ†āĻ›ā§‡... āĻ†āĻŽāĻ°āĻž āĻĻā§€āĻ°ā§āĻ˜ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ 1M āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŦ, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŸā§‡āĻŦāĻŋāĻ˛āĻŸāĻŋ āĻ–āĻžāĻ˛āĻŋ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻž (āĻ¯ā§‡āĻŽāĻ¨ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻ• āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ā§‡ āĻŽā§‹āĻĄāĻŧāĻžāĻ¨ā§‹ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻ˜āĻŸāĻŦā§‡)ā§ˇ

āĻ¯āĻžāĻ° āĻ…āĻ°ā§āĻĨ:

  • āĻ†āĻŽāĻ°āĻž āĻļā§āĻ°ā§ āĻ•āĻ°āĻ›āĻŋ āĻĻā§€āĻ°ā§āĻ˜āĻŽā§‡āĻ¯āĻŧāĻžāĻĻā§€ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨
  • TRUNCATE āĻ†āĻ°ā§‹āĻĒ āĻ•āĻ°ā§‡ āĻāĻ•ā§āĻ¸āĻ•ā§āĻ˛ā§āĻ¸āĻŋāĻ­ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸-āĻ…āĻŦāĻ°ā§‹āĻ§
  • āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻĻā§€āĻ°ā§āĻ˜ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§‡āĻļ āĻ¨āĻž, āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯ āĻ¸āĻŦāĻžāĻ‡ āĻāĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻāĻŽāĻ¨āĻ•āĻŋ āĻĒāĻžāĻ°ā§‡ āĻ¨āĻž SELECT

āĻ•āĻŋāĻ›ā§ āĻ­āĻžāĻ˛ā§‹ āĻ¯āĻžāĻšā§āĻ›ā§‡ āĻ¨āĻž...

āĻ¸āĻžāĻ°āĻŖā§€ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§āĻ¨... āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ¨... / āĻ¸āĻžāĻ°āĻŖā§€ āĻŦāĻžāĻĻ āĻĻāĻŋāĻ¨...

āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻ¨āĻ¤ā§āĻ¨ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻĒā§āĻ°āĻžāĻ¨ā§‹āĻŸāĻŋāĻ° āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ āĻāĻŸāĻŋāĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĨ¤ āĻ•āĻŋāĻ›ā§ āĻŦāĻžāĻœā§‡ āĻ›ā§‹āĻŸ āĻœāĻŋāĻ¨āĻŋāĻ¸:

  • āĻāĻ–āĻ¨āĻ“ āĻ–ā§āĻŦ āĻāĻ•ā§āĻ¸āĻ•ā§āĻ˛ā§āĻ¸āĻŋāĻ­ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸, āĻ¯āĻĻāĻŋāĻ“ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻ•āĻŽ āĻ¸āĻŽāĻ¯āĻŧ
  • āĻāĻ‡ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨/āĻĒāĻ°āĻŋāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¨ āĻ°āĻŋāĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, ANALYZE āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻšāĻŦā§‡
  • āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻŋāĻĻā§‡āĻļā§€ āĻ•ā§€āĻ—ā§āĻ˛āĻŋ āĻ­ā§‡āĻ™ā§‡ āĻ—ā§‡āĻ›ā§‡ (FK) āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡

āĻ¸āĻžāĻ‡āĻŽāĻ¨ āĻ°āĻŋāĻ—āĻ¸ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĄāĻžāĻŦā§āĻ˛ā§āĻ†āĻ‡āĻĒāĻŋ āĻĒā§āĻ¯āĻžāĻš āĻ›āĻŋāĻ˛ āĻ¯āĻž āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ ALTER-āĻĒāĻ°āĻŋāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ FK āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ¨āĻž āĻ•āĻ°ā§‡ āĻĢāĻžāĻ‡āĻ˛ āĻ¸ā§āĻ¤āĻ°ā§‡ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻŦāĻĄāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•ā§‹āĻ°āĻžāĻŽ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°ā§‡āĻ¨āĻŋāĨ¤

āĻŽā§āĻ›ā§āĻ¨, āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°ā§āĻ¨, āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§‡āĻļ āĻ•āĻ°ā§āĻ¨

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ†āĻŽāĻ°āĻž āĻ¤āĻŋāĻ¨āĻŸāĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻ…-āĻŦā§āĻ˛āĻ•āĻŋāĻ‚ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒā§‡ āĻŽā§€āĻŽāĻžāĻ‚āĻ¸āĻž āĻ•āĻ°āĻŋāĨ¤ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¤āĻŋāĻ¨... āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°āĻ­āĻžāĻŦā§‡ āĻ•āĻ°āĻŦā§‡āĻ¨?

-- вŅĐĩ Đ´ĐĩĐģĐ°ĐĩĐŧ в Ņ€Đ°ĐŧĐēĐ°Ņ… Ņ‚Ņ€Đ°ĐŊСаĐēŅ†Đ¸Đ¸, Ņ‡Ņ‚ОйŅ‹ ĐŊиĐēŅ‚Đž ĐŊĐĩ видĐĩĐģ "ĐŋŅ€ĐžĐŧĐĩĐļŅƒŅ‚ĐžŅ‡ĐŊŅ‹Ņ…" ŅĐžŅŅ‚ĐžŅĐŊиК
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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨