๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ ์ผ์ง€ ๐Ÿ‘ฉ‍๐Ÿ’ป

[PostgreSQL] ๊ฐœ๋ฐœ ํšจ์œจ UP! generate_series()๋กœ ๋Œ€๋Ÿ‰์˜ ๋ฐ˜๋ณต ๋ฐ์ดํ„ฐ ํ•œ ๋ฒˆ์— INSERT ํ•˜๊ธฐ

by chuyj15 2025. 11. 12.
728x90
๋ฐ˜์‘ํ˜•
SMALL

1. ๋ฌธ์ œ ์ƒํ™ฉ: ๋ฐ˜๋ณต๋˜๋Š” ๋”๋ฏธ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…์˜ ๋น„ํšจ์œจ์„ฑ

๊ฐœ๋ฐœ์ด๋‚˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด, test1, test2, ..., testN๊ณผ ๊ฐ™์ด ๊ทœ์น™์ ์œผ๋กœ ๋ฐ˜๋ณต๋˜๋Š” ๋”๋ฏธ(Dummy) ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€๋Ÿ‰์œผ๋กœ ์‚ฝ์ž…ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ SQL ๋ฌธ๋ฒ•์ธ INSERT INTO ... VALUES๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด 30๊ฐœ์˜ ํ–‰์„ ์ผ์ผ์ด ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•ด์•ผ ํ•˜๋Š” ๋น„ํšจ์œจ์ ์ธ ์ƒํ™ฉ์— ์ง๋ฉดํ•ฉ๋‹ˆ๋‹ค.

SQL
 
-- ๋ฐ˜๋ณต ์ž‘์—…์„ ์ˆ˜๋™์œผ๋กœ ํ•ด์•ผ ํ•˜๋Š” ๋น„ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•
INSERT INTO tb_master (last_login_date, master_name, mod_date, mod_user, pw, reg_date, reg_user, use_yn, master_id)
VALUES 
    (NULL, 'test4', NULL, NULL, 'test4', '2025-11-12T11:50:10.195+0900', 'SYSTEM', 'Y', 'test4'),
    (NULL, 'test5', NULL, NULL, 'test5', '2025-11-12T11:50:10.195+0900', 'SYSTEM', 'Y', 'test5'),
    -- ... (test30๊นŒ์ง€ 26๋ฒˆ์˜ ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•„์š”) ...
    (NULL, 'test30', NULL, NULL, 'test30', '2025-11-12T11:50:10.195+0900', 'SYSTEM', 'Y', 'test30');

 2. ํ•ด๊ฒฐ์ฑ…: PostgreSQL์˜ generate_series() ํ•จ์ˆ˜ ํ™œ์šฉ

PostgreSQL์€ ์ด๋Ÿฌํ•œ ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์„ ๋งค์šฐ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์žฅ ํ•จ์ˆ˜ **generate_series()**๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ง€์ •๋œ ๋ฒ”์œ„์˜ ์—ฐ์†๋œ ์ˆซ์ž ์‹œํ€€์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ์ด๋ฅผ INSERT INTO ... SELECT ๊ตฌ๋ฌธ๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ํ•œ ์ค„์˜ ์ฟผ๋ฆฌ๋กœ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ง 3. generate_series()๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ์ฟผ๋ฆฌ

๋‹ค์Œ์€ master_id์™€ pw์— test4๋ถ€ํ„ฐ test30๊นŒ์ง€ 27๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์‚ฝ์ž…ํ•˜๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค.

SQL
 
INSERT INTO tb_master 
    (last_login_date, master_name, mod_date, mod_user, pw, reg_date, reg_user, use_yn, master_id)
SELECT 
    NULL, 
    'test' || s.id, -- master_name: 'test'์™€ ์ˆซ์ž ์—ฐ๊ฒฐ
    NULL, 
    NULL, 
    'test' || s.id, -- pw: 'test'์™€ ์ˆซ์ž ์—ฐ๊ฒฐ
    NOW(),          -- reg_date: ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ˜„์žฌ ์‹œ๊ฐ„
    'SYSTEM', 
    'Y', 
    'test' || s.id  -- master_id: 'test'์™€ ์ˆซ์ž ์—ฐ๊ฒฐ
FROM 
    generate_series(4, 30) AS s(id);

 4. ์ฟผ๋ฆฌ ์ƒ์„ธ ๋ถ„์„

์ฝ”๋“œ ์—ญํ•  ์„ค๋ช…
generate_series(4, 30) ์‹œํ€€์Šค ์ƒ์„ฑ 4๋ถ€ํ„ฐ 30๊นŒ์ง€์˜ ์ •์ˆ˜(4, 5, 6, ..., 30)๋ฅผ ํ–‰์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
AS s(id) ๋ณ„์นญ ๋ถ€์—ฌ ์ƒ์„ฑ๋œ ์‹œํ€€์Šค๋ฅผ ํ…Œ์ด๋ธ” s๋กœ, ๊ฐ ์ˆซ์ž๋ฅผ ์ปฌ๋Ÿผ id๋กœ ๋ณ„์นญ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
`'test'   s.id`
NOW() ํ˜„์žฌ ์‹œ๊ฐ reg_date ํ•„๋“œ์— ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ •ํ™•ํ•œ ํ˜„์žฌ ์‹œ๊ฐ์„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. (์›๋ณธ ์ฟผ๋ฆฌ์˜ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์‹œ๊ฐ„ ๋Œ€์‹  ์‚ฌ์šฉ)
INSERT INTO ... SELECT ๋Œ€๋Ÿ‰ ์‚ฝ์ž… generate_series()๋กœ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์˜ ์ฟผ๋ฆฌ๋กœ ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

5. ๊ฒฐ๋ก  ๋ฐ ์‘์šฉ

generate_series()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹จ์ˆœ ๋ฐ˜๋ณต ์ž‘์—… ์‹œ๊ฐ„์„ ํš๊ธฐ์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ• ์‹œ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ(Initial Data)๋ฅผ ์ฑ„์šฐ๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋Œ€๋Ÿ‰์˜ ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ๋” ๋ณธ์งˆ์ ์ธ ๊ฐœ๋ฐœ ์ž‘์—…์— ์ง‘์ค‘ํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค!

 

#PostgreSQL #SQL #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค #generate_series #INSERT #๊ฐœ๋ฐœํŒ #๊ฐœ๋ฐœํšจ์œจํ™” #๋”๋ฏธ๋ฐ์ดํ„ฐ #DummyData
728x90
๋ฐ˜์‘ํ˜•
LIST