๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project ESG+AI/[์‚ผ์ •KPMG]ESG ๋ฐ์ดํ„ฐ ํ™œ์šฉ ํ’€์Šคํ… ๊ฐœ๋ฐœ

14์ผ์ฐจ. ๋„์ปค, pgAdmin ์„ค์น˜ํ•˜๊ธฐ(์ด๊ฒŒ ์ฐ)

by GreenJin_S2 2025. 10. 28.

 

์œˆ๋„์šฐ R - ์‹คํ–‰ ๋“ค์–ด๊ฐ€์ง

1. sysdm.cpl ,3

2. appwiz.cpl (ํ”„๋กœ๊ทธ๋žจ ์‚ญ์ œ ํ•  ๋•Œ ์“ฐ๋Š” ๋‹จ์ถ•ํ‚ค)

 

- ๋‘ ๊ฐœ๋Š” ์™ธ์šฐ๊ธฐ

 


๋‹ค์šด๋กœ๋“œ ์ฐจ๊ทผ์ฐจ๊ทผ ๋‹ค์‹œ! ์–ด์ œ ํ–ˆ๋˜ ๊ฑฐ ๋‹ค๋ฆ„ ๋‹ค์‹œ ์„ค์น˜

 

Download

 

Download

pgAdmin 4 (Windows) Download Maintainer: pgAdmin Development Team pgAdmin is available for 64 bit Windows™ 7 SP1 (desktop) or 2008R2 (server) and above, up to v4.30. v5.0 and later are supported on Windows 8 (desktop) or 2012 (server) and above. v7.0 and

www.pgadmin.org

 

 

 

 

 

 

ํ„ฐ๋ฏธ๋„์— ๊ฐ„๋‹ค

 

 

์ด๊ฑด ์ตœ์ข…์ ์œผ๋กœ ๋‚˜์ค‘์— ์—ฌ๊ธฐ ์˜ฌ๋ ค์•ผํ•จ

 

 

 

 

docker exec -it esgseed bash

 

exit 

 

docker ps -a

(ํ™•์ธ์šฉ_)

 

root@4da107a874d3:/# psql -U esgseed -d esgseeddb

 

-ํ•œ์ค„๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

docker exec -it esgseed psql -U esgseed -d esgseeddb

 

\dt

 

 

ํ…Œ์ด๋ธ” ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด

create table 

 

 

 

docker exec esgseed ls -id /tmp 

**ls์ž„!

 

 

 

 

localhost

esgseeddb

esgseed

esgseed1234


CSV ํŒŒ์ผ์„ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ณต์‚ฌํ•˜๊ธฐ


์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ : esgseed
์‚ฌ์šฉ์ž ์ด๋ฆ„ : esgseed
DB ์ด๋ฆ„ : esgseeddb
ํ…Œ์ด๋ธ” ์ด๋ฆ„ : train_weather

# 1. CSV ํŒŒ์ผ์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ณต์‚ฌ
docker cp src/main/resources/static/csv/train_weather.csv esgseed:/tmp/train_weather.csv

# 2. ํ…Œ์ด๋ธ” ์ƒ์„ฑ

docker exec -it esgseed bash

psql -U esgseed -d esgseeddb

"esgseeddb=# CREATE TABLE IF NOT EXISTS train_weather (
esgseeddb(#     ์ผ์‹œ DATE PRIMARY KEY,
esgseeddb(#     ํ‰๊ท ๊ธฐ์˜จ NUMERIC,
esgseeddb(#     ์ตœ๊ณ ๊ธฐ์˜จ NUMERIC,
esgseeddb(#     ์ตœ๊ณ ๊ธฐ์˜จ์‹œ๊ฐ TIME,
esgseeddb(#     ์ตœ์ €๊ธฐ์˜จ NUMERIC,
esgseeddb(#     ์ตœ์ €๊ธฐ์˜จ์‹œ๊ฐ TIME,
esgseeddb(#     ์ผ๊ต์ฐจ NUMERIC,
esgseeddb(#     ๊ฐ•์ˆ˜๋Ÿ‰ NUMERIC
esgseeddb(# );


docker exec labzang psql -U labzang -d labzangdb -c "CREATE TABLE IF NOT EXISTS test (id SERIAL PRIMARY KEY, date DATE, entry TEXT, summary TEXT, language VARCHAR(50), notes TEXT);"

# 3. ๋ฐ์ดํ„ฐ ๋กœ๋“œ
docker exec labzang psql -U labzang -d labzangdb -c "COPY test(date, entry, summary, language, notes) FROM '/tmp/test.csv' WITH (FORMAT csv, HEADER true, DELIMITER ',');"

 

docker exec -it esgseed bash

psql -U esgseed -d esgseeddb

esgseeddb=# COPY train_weather(์ผ์‹œ, ํ‰๊ท ๊ธฐ์˜จ, ์ตœ๊ณ ๊ธฐ์˜จ, ์ตœ๊ณ ๊ธฐ์˜จ์‹œ๊ฐ,  
์ตœ์ €๊ธฐ์˜จ, ์ตœ์ €๊ธฐ์˜จ์‹œ๊ฐ, ์ผ๊ต์ฐจ, ๊ฐ•์ˆ˜๋Ÿ‰)
esgseeddb-# WITH (
esgseeddb(#     FORMAT csv,
esgseeddb(#     HEADER true,
esgseeddb(#     DELIMITER ',',
esgseeddb(#     NULL '',
esgseeddb(#     FORCE_NULL (ํ‰๊ท ๊ธฐ์˜จ, ์ตœ๊ณ ๊ธฐ์˜จ, ์ตœ์ €๊ธฐ์˜จ, ์ผ๊ต์ฐจ, ๊ฐ•์ˆ˜๋Ÿ‰
);



# 4. ๋ฐ์ดํ„ฐ ํ™•์ธ
docker exec labzang psql -U labzang -d labzangdb -c "SELECT COUNT(*) FROM test;"

 

esgseeddb=# SELECT COUNT(*) FROM train_weather;

 

 

 

๋ณต์žกํ•œ ๋””๋น„๋Š” ์—๋Ÿฌ๊ฐ€ ๋งŽ์ด ๋‚จ ๊ทธ๊ฑธ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ์•ˆ์„ ์•Œ์•„๋‘์–ด์•ผ ํ•  ๋“ฏ


 

 

-์–ด์ œ ์—๋Ÿฌ๋‚œ๊ฑฐ ์žก๊ธฐ(์–ด์ œ ์„ค์น˜ํ•˜๋‹ค๊ฐ€ ์ค‘๊ฐ„์— ๋ฉˆ์ถฐ์„œ ๋‚œ ์—๋Ÿฌ์˜€์Œ! ์ด์ œ ์žก๊ณ  ๋‹ค์‹œํ–ˆ์Œ)

 

 


 

 

1 - 5 #์ถ•๊ตฌ์ฟผ๋ฆฌ๋ฌธ์ œ

-- 001. ์ „์ฒด ์ถ•๊ตฌํŒ€ ๋ชฉ๋ก์„ ํŒ€์ด๋ฆ„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•˜์‹œ์˜ค

-- 002. ํ”Œ๋ ˆ์ด์–ด์˜ ํฌ์ง€์…˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜์—ดํ•˜์‹œ์˜ค. ๋‹จ ์ค‘๋ณต์€ ์ œ๊ฑฐํ•˜๊ณ , ํฌ์ง€์…˜์ด ์—†์œผ๋ฉด ๋นˆ๊ณต๊ฐ„์œผ๋กœ ๋‘์‹œ์˜ค

-- 003. ํ”Œ๋ ˆ์ด์–ด์˜ ํฌ์ง€์…˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜์—ดํ•˜์‹œ์˜ค. ๋‹จ ์ค‘๋ณต์€ ์ œ๊ฑฐํ•˜๊ณ , ํฌ์ง€์…˜์ด ์—†์œผ๋ฉด '์‹ ์ž…' ์œผ๋กœ ๊ธฐ์žฌํ•˜์‹œ์˜ค

-- 004. ์ˆ˜์›ํŒ€์—์„œ ๊ณจํ‚คํผ(GK)์˜ ์ด๋ฆ„์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ๋‹จ ์ˆ˜์›ํŒ€ ID๋Š” K02 ์ž…๋‹ˆ๋‹ค.

-- 005. ์ˆ˜์›ํŒ€์—์„œ ์„ฑ์ด ๊ณ ์”จ์ด๊ณ  ํ‚ค๊ฐ€ 170 ์ด์ƒ์ธ ์„ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ๋‹จ ์ˆ˜์›ํŒ€ ID๋Š” K02 ์ž…๋‹ˆ๋‹ค.

 

 

soccer .sql postgresql version ddl, dml

 

soccer .sql postgresql version ddl, dml

๋‹ค ์ž…๋ ฅํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.  ์‹คํ–‰ ์ˆœ์„œ 1CREATE TABLE stadium ( stadium_id VARCHAR(10) PRIMARY KEY, stadium_name VARCHAR(40), hometeam_id VARCHAR(10), -- team.team_id์™€ ์—ฐ๊ด€ seat_count INTEGER, address VARCHAR(60), ddd VARCHAR

parksrazor.tistory.com

 

 

๊ฐ ์ค„ ๋„ฃ๊ณ  (์‹คํ–‰์ˆœ์„œ1~5-2) ํ™”์‚ดํ‘œ ๋ˆ„๋ฅด๊ณ 

 

๋งจ ๋งˆ์ง€๋ง‰์— ๋งจ ์œ„๋กœ ์˜ฌ๋ ค์„œ select count(*) from ________; ๋„ฃ๊ณ  ์˜†์— ์ˆซ์ž๊ฐ€ ๋ฐ‘์— ๋‚˜์˜ค๋ฉด ์„ฑ๊ณต! 

 

 

 

ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ Postgresql ์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ๋Š” ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ•๊ตฌ ์˜ˆ์ œ ์™€ ERD
 

soccer .sql postgresql version ddl, dml

๋‹ค ์ž…๋ ฅํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.  ์‹คํ–‰ ์ˆœ์„œ 1CREATE TABLE stadium ( stadium_id VARCHAR(10) PRIMARY KEY, stadium_name VARCHAR(40), hometeam_id VARCHAR(10), -- team.team_id์™€ ์—ฐ๊ด€ seat_count INTEGER, address VARCHAR(60), ddd VARCHAR

parksrazor.tistory.com

 

1 - 5 #์ถ•๊ตฌ์ฟผ๋ฆฌ๋ฌธ์ œ

-- 001. ์ „์ฒด ์ถ•๊ตฌํŒ€ ๋ชฉ๋ก์„ ํŒ€์ด๋ฆ„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•˜์‹œ์˜ค

-- 002. ํ”Œ๋ ˆ์ด์–ด์˜ ํฌ์ง€์…˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜์—ดํ•˜์‹œ์˜ค. ๋‹จ ์ค‘๋ณต์€ ์ œ๊ฑฐํ•˜๊ณ , ํฌ์ง€์…˜์ด ์—†์œผ๋ฉด ๋นˆ๊ณต๊ฐ„์œผ๋กœ ๋‘์‹œ์˜ค

-- 003. ํ”Œ๋ ˆ์ด์–ด์˜ ํฌ์ง€์…˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜์—ดํ•˜์‹œ์˜ค. ๋‹จ ์ค‘๋ณต์€ ์ œ๊ฑฐํ•˜๊ณ , ํฌ์ง€์…˜์ด ์—†์œผ๋ฉด '์‹ ์ž…' ์œผ๋กœ ๊ธฐ์žฌํ•˜์‹œ์˜ค

-- 004. ์ˆ˜์›ํŒ€์—์„œ ๊ณจํ‚คํผ(GK)์˜ ์ด๋ฆ„์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ๋‹จ ์ˆ˜์›ํŒ€ ID๋Š” K02 ์ž…๋‹ˆ๋‹ค.

-- 005. ์ˆ˜์›ํŒ€์—์„œ ์„ฑ์ด ๊ณ ์”จ์ด๊ณ  ํ‚ค๊ฐ€ 170 ์ด์ƒ์ธ ์„ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ๋‹จ ์ˆ˜์›ํŒ€ ID๋Š” K02 ์ž…๋‹ˆ๋‹ค.

 

์ •๋‹ต ์ฟผ๋ฆฌ (001 ~ 005)

sql
 

-- 001. ์ „์ฒด ์ถ•๊ตฌํŒ€ ๋ชฉ๋ก์„ ํŒ€์ด๋ฆ„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•˜์‹œ์˜ค

(*ํŒ€์ด๋ฆ„ ์˜ค๋ฆ„์ฐจ์ˆœ์ด ์˜ค๋ฅ˜๊ฐ€ ๋งŽ์ด ๋‚จ ์•„๋ž˜์™€ ๊ฐ™์ด create ๋จผ์ €ํ•˜๊ณ  ํ•˜๋ฉด ๊ดœ์ฐฎ๊ฒŒ ๋‚˜์™”์Œ)

 

1. run

 

CREATE COLLATION korean (provider = icu, locale = 'ko_KR');

 

2. run

 

SELECT team_name
FROM team
ORDER BY team_name COLLATE korean ASC;

 

 

ASC; ์˜ค๋ฆ„์ฐจ์ˆœ

DESC : ๋‚ด๋ฆผ์ฐจ์ˆœ

 

 
sql
-- 002. ํ”Œ๋ ˆ์ด์–ด์˜ ํฌ์ง€์…˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜์—ดํ•˜์‹œ์˜ค. ๋‹จ ์ค‘๋ณต์€ ์ œ๊ฑฐํ•˜๊ณ , ํฌ์ง€์…˜์ด ์—†์œผ๋ฉด ๋นˆ๊ณต๊ฐ„์œผ๋กœ ๋‘์‹œ์˜ค
SELECT DISTINCT COALESCE(position, '') AS position
FROM player;

 

-- 002. ํ”Œ๋ ˆ์ด์–ด์˜ ํฌ์ง€์…˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜์—ดํ•˜์‹œ์˜ค. ๋‹จ ์ค‘๋ณต์€ ์ œ๊ฑฐํ•˜๊ณ , ํฌ์ง€์…˜์ด ์—†์œผ๋ฉด ๋นˆ๊ณต๊ฐ„์œผ๋กœ ๋‘์‹œ์˜ค
SELECT DISTINCT COALESCE(position, '') AS position
FROM player;
sql
-- 003. ํ”Œ๋ ˆ์ด์–ด์˜ ํฌ์ง€์…˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜์—ดํ•˜์‹œ์˜ค. ๋‹จ ์ค‘๋ณต์€ ์ œ๊ฑฐํ•˜๊ณ , ํฌ์ง€์…˜์ด ์—†์œผ๋ฉด '์‹ ์ž…' ์œผ๋กœ ๊ธฐ์žฌํ•˜์‹œ์˜ค
SELECT DISTINCT COALESCE(position, '์‹ ์ž…') AS position
FROM player;
-- 003. ํ”Œ๋ ˆ์ด์–ด์˜ ํฌ์ง€์…˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜์—ดํ•˜์‹œ์˜ค. ๋‹จ ์ค‘๋ณต์€ ์ œ๊ฑฐํ•˜๊ณ , ํฌ์ง€์…˜์ด ์—†์œผ๋ฉด '์‹ ์ž…' ์œผ๋กœ ๊ธฐ์žฌํ•˜์‹œ์˜ค
SELECT DISTINCT COALESCE(position, '์‹ ์ž…') AS position
FROM player;
sql
 

-- 004. ์ˆ˜์›ํŒ€์—์„œ ๊ณจํ‚คํผ(GK)์˜ ์ด๋ฆ„์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ๋‹จ ์ˆ˜์›ํŒ€ ID๋Š” K02 ์ž…๋‹ˆ๋‹ค.
SELECT player_name
FROM player
WHERE team_id = 'K02' 
  AND position = 'GK';

-- 004. ์ˆ˜์›ํŒ€์—์„œ ๊ณจํ‚คํผ(GK)์˜ ์ด๋ฆ„์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ๋‹จ ์ˆ˜์›ํŒ€ ID๋Š” K02 ์ž…๋‹ˆ๋‹ค.
SELECT player_name
FROM player
WHERE team_id = 'K02' 
  AND position = 'GK';
sql
-- 005. ์ˆ˜์›ํŒ€์—์„œ ์„ฑ์ด ๊ณ ์”จ์ด๊ณ  ํ‚ค๊ฐ€ 170 ์ด์ƒ์ธ ์„ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ๋‹จ ์ˆ˜์›ํŒ€ ID๋Š” K02 ์ž…๋‹ˆ๋‹ค.
SELECT player_name, height, position
FROM player
WHERE team_id = 'K02'
  AND player_name LIKE '๊ณ %'   -- ์„ฑ์ด '๊ณ '์”จ
  AND height >= 170;

 

-- 005. ์ˆ˜์›ํŒ€์—์„œ ์„ฑ์ด ๊ณ ์”จ์ด๊ณ  ํ‚ค๊ฐ€ 170 ์ด์ƒ์ธ ์„ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค. ๋‹จ ์ˆ˜์›ํŒ€ ID๋Š” K02 ์ž…๋‹ˆ๋‹ค.
SELECT player_name, height, position
FROM player
WHERE team_id = 'K02'
  AND player_name LIKE '๊ณ %'   -- ์„ฑ์ด '๊ณ '์”จ
  AND height >= 170;

 


 

-- 005-1. ์ˆ˜์›ํŒ€์˜ ID ๋Š” ?

 

SELECT team_id 
FROM team 
WHERE region_name = '์ˆ˜์›';



-- 005-2. ์ˆ˜์›ํŒ€์—์„œ ์„ฑ์ด ๊ณ ์”จ์ด๊ณ  ํ‚ค๊ฐ€ 170 ์ด์ƒ์ธ ์„ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค. (์„œ๋ธŒ์ฟผ๋ฆฌ)

SELECT p.player_name, p.height, p.position
FROM player p
WHERE p.team_id = (SELECT team_id FROM team WHERE team_name = '์‚ผ์„ฑ๋ธ”๋ฃจ์œ™์ฆˆ')
  AND p.player_name LIKE '๊ณ %'
  AND p.height >= 170;


-- ๋ฌธ์ œ 6
-- ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์„ ์ˆ˜๋ช…๋‹จ์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค
-- ์†Œ์†ํŒ€์ด ์‚ผ์„ฑ๋ธ”๋ฃจ์œ™์ฆˆ์ด๊ฑฐ๋‚˜
-- ๋“œ๋ž˜๊ณค์ฆˆ์— ์†Œ์†๋œ ์„ ์ˆ˜๋“ค์ด์–ด์•ผ ํ•˜๊ณ ,
-- ํฌ์ง€์…˜์ด ๋ฏธ๋“œํ•„๋”(MF:Midfielder)์ด์–ด์•ผ ํ•œ๋‹ค.
-- ํ‚ค๋Š” 170 ์„ผํ‹ฐ๋ฏธํ„ฐ ์ด์ƒ์ด๊ณ  180 ์ดํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

SELECT p.player_name, t.team_name, p.position, p.height
FROM player p
JOIN team t ON p.team_id = t.team_id
WHERE t.team_name IN ('์‚ผ์„ฑ๋ธ”๋ฃจ์œ™์ฆˆ', '๋“œ๋ž˜๊ณค์ฆˆ')
  AND p.position = 'MF'
  AND p.height BETWEEN 170 AND 180
ORDER BY t.team_name, p.height ASC;