์ฌ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- csv
- datetime
์ง๋ ๊ธ์ ์ด์ด์ ๋ฒ์ญํ ๋ฉ์์ง ๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ์ ์ฝ์ ํด์ผ ํ๋ ์ผ์ด ์๊ฒผ๋ค. ํ๋์ฉ ๋ณต์ฌํด์ insert๋ฌธ์ ์์ฑํ๊ธฐ์ ๋๋ฌด ๋ง๋ค๋ ์๊ฐ์ด ๋ค์ด์ ํ ๋ฒ์ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณ ๋ฏผํ๋ค.
Python์ ์ฌ์ฉํ์ฌ CSV ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฝ์ ํ ์ ์๋๋ก csv ๋ชจ๋์ ์ด์ฉํด CSV ํ์ผ์ ์ฝ๊ณ , ๊ฐ ํ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก MySQL INSERT ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด๋ดค๋ค.
en.csv ํ์ผ (CSV ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํ๋ค)
- ์ฒซ ๋ฒ์งธ ์ด: ํ๊ตญ์ด ๋ฉ์์ง (MSG)
- ๋ ๋ฒ์งธ ์ด: ๋ฉ์์ง ์ฝ๋ (MSG_CD)
- ์ธ ๋ฒ์งธ ์ด: ์์ด๋ก ๋ฒ์ญ๋ ๋ฉ์์ง (MSG_EN)
- ๋๋จธ์ง ์ด์ ๋ฌด์๋๋ค.
01. Python ์ฝ๋
๋ค์์ en.csv ํ์ผ์ ์ฝ์ด์ ๊ฐ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ MySQL INSERT ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ๋ Python ์ฝ๋์ด๋ค.
import csv
# en.csv ํ์ผ ๊ฒฝ๋ก
csv_file = 'en.csv'
# ์์ฑํ INSERT ์ฟผ๋ฆฌ๋ฌธ์ ์ ์ฅํ ๋ฆฌ์คํธ
query_list = []
# en.csv ํ์ผ ์ฝ๊ธฐ
with open(csv_file, 'r', newline='', encoding='utf-8') as f:
reader = csv.reader(f)
header = next(reader) # ์ฒซ ๋ฒ์งธ ์ค์ ํค๋๋ก ์ฒ๋ฆฌ
# ๊ฐ ํ๋ง๋ค INSERT ์ฟผ๋ฆฌ๋ฌธ ์์ฑ
for row in reader:
LANG_CD = 'ko' # ์ธ์ด ์ฝ๋ (์: ํ๊ตญ์ด)
MSG_CD = row[1] # MSG_CD ์ด์ ๋ฐ์ดํฐ
MSG = row[0] # MSG ์ด์ ๋ฐ์ดํฐ
MSG_EN = row[2] # MSG_EN ์ด์ ๋ฐ์ดํฐ
CRT_DT = '20240627143000' # ์์ฑ ์ผ์ (YYYYMMDDHHMMSS ํ์)
UPDT_DT = '20240627143000' # ์
๋ฐ์ดํธ ์ผ์ (YYYYMMDDHHMMSS ํ์)
# INSERT ์ฟผ๋ฆฌ๋ฌธ ์์ฑํ์ฌ ๋ฆฌ์คํธ์ ์ถ๊ฐ
query = f"INSERT INTO cm_message (LANG_CD, MSG_CD, MSG, MSG_EN, CRT_DT, UPDT_DT) VALUES ('{LANG_CD}', '{MSG_CD}', '{MSG}', '{MSG_EN}', '{CRT_DT}', '{UPDT_DT}');"
query_list.append(query)
# ์์ฑ๋ ์ฟผ๋ฆฌ๋ฌธ ์ถ๋ ฅ ๋๋ ํ์ผ์ ์ ์ฅ
for query in query_list:
print(query)
1. en.csv ํ์ผ์ ์ฝ๋๋ค. ์ด ํ์ผ์ ํ๊ตญ์ด ๋ฉ์์ง, ๋ฉ์์ง ์ฝ๋, ์์ด ๋ฉ์์ง๋ฅผ ํฌํจํ๋ค.
2. csv.reader๋ฅผ ์ฌ์ฉํ์ฌ CSV ํ์ผ์ ์ฝ๊ณ , ์ฒซ ๋ฒ์งธ ์ค์ ํค๋๋ก ์ฒ๋ฆฌํ๋ค.
3. ๊ฐ ํ๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ์ฌ INSERT INTO ... VALUES ... ํ์์ SQL ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ๋ค.
4. ์์ฑ๋ ์ฟผ๋ฆฌ๋ฌธ์ query_list์ ์ถ๊ฐํ๋ค.
5. ์ต์ข ์ ์ผ๋ก ์์ฑ๋ ์ฟผ๋ฆฌ๋ฌธ์ ์ถ๋ ฅํ๊ฑฐ๋ ํ์ผ์ ์ ์ฅํ๋ค.
02. ์ฃผ์ ํฌ์ธํธ
- CSV ํ์ผ์ ์ฝ์ ๋, encoding='utf-8' ์ต์ ์ ์ฌ์ฉํ์ฌ UTF-8 ์ธ์ฝ๋ฉ์ ์ง์ ํ๋ค.
- ์์ฑ ์ผ์ (CRT_DT)์ ์ ๋ฐ์ดํธ ์ผ์ (UPDT_DT)๋ ์ฐ์ ๊ณ ์ ๋ ๊ฐ์ ์ฌ์ฉํ์๋ค. ์ค์ ๋ก๋ ํ์ฌ ์๊ฐ์ ์ฌ์ฉํ๊ฑฐ๋ ๋ค๋ฅธ ๋ก์ง์ ์ ์ฉํ ์ ์๋ค.
- ์ฟผ๋ฆฌ๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค์ ๋ก ์ฝ์
ํ๊ธฐ ์ ์, ์์ฑ๋ ์ฟผ๋ฆฌ๋ฌธ์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํ๋ค.
03. ์ฝ๋ ๊ฐ์ ํ๊ธฐ
ํ๋์ฝ๋ฉ์ ์ค์ด๊ณ ๋ณด๋ค ์ ์ฐํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ์ฉํด ๋ณด์. ๊ฐ ์ด ์ด๋ฆ์ ๋์๋๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์๋๋ก ํ์๋ค. ๊ณ ์ ๋ ์ผ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ datetime์ผ๋ก ํ์ฌ ์๊ฐ์ ๊ฐ์ ธ์ค๋๋ก ์์ ํ์๋ค.
import csv
from datetime import datetime
# en.csv ํ์ผ ๊ฒฝ๋ก
csv_file = 'en.csv'
# ์์ฑํ INSERT ์ฟผ๋ฆฌ๋ฌธ์ ์ ์ฅํ ๋ฆฌ์คํธ
query_list = []
# ํ์ฌ ์๊ฐ์ YYYYMMDDHHMMSS ํ์์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ
current_time = datetime.now().strftime('%Y%m%d%H%M%S')
# en.csv ํ์ผ ์ฝ๊ธฐ
with open(csv_file, 'r', newline='', encoding='utf-8') as f:
reader = csv.DictReader(f)
# ๊ฐ ํ๋ง๋ค INSERT ์ฟผ๋ฆฌ๋ฌธ ์์ฑ
for row in reader:
# ๊ฐ ์ด ์ด๋ฆ์ ๋์๋๋ ๋ฐ์ดํฐ ์ถ์ถ
LANG_CD = row['LANG_CD']
MSG_CD = row['MSG_CD']
MSG = row['MSG']
MSG_EN = row['MSG_EN']
CRT_DT = current_time # ์์ฑ ์ผ์
UPDT_DT = current_time # ์
๋ฐ์ดํธ ์ผ์
# INSERT ์ฟผ๋ฆฌ๋ฌธ ์์ฑํ์ฌ ๋ฆฌ์คํธ์ ์ถ๊ฐ
query = (
f"('{LANG_CD}', "
f"'{MSG_CD}', "
f"'{MSG.replace('\\'', '\\\\\\'')}', "
f"'{MSG_EN.replace('\\'', '\\\\\\'')}', "
f"'{CRT_DT}', "
f"'{UPDT_DT}')"
)
query_list.append(query)
# ์ฟผ๋ฆฌ๋ฌธ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด ์ต์ข
INSERT ์ฟผ๋ฆฌ๋ฌธ ์์ฑ
insert_query = f"INSERT INTO cm_message (LANG_CD, MSG_CD, MSG, MSG_EN, CRT_DT, UPDT_DT) VALUES\\\\n"
insert_query += ",\\\\n".join(query_list) + ";"
# ์์ฑ๋ ์ฟผ๋ฆฌ๋ฌธ ์ถ๋ ฅ
print(insert_query)
05. ๊ฐ์ ๋ ์
- csv.DictReader()๋ก ๊ฐ ํ์ ์ฌ์ (dictionary) ํํ๋ก ์ฝ์ด ์ด ์ด๋ฆ์ ์ง์ ์ง์ ํด ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค.
- ํ์ฌ ์๊ฐ์ ๋ณ์์ ์ ์ฅํ๊ณ , ์ด๋ฅผ ์ด์ฉํ์ฌ ์์ฑ ์ผ์์ ์ ๋ฐ์ดํธ ์ผ์๋ฅผ ํ ๋นํ๋ค.
- ๊ฐ ๋ฐ์ดํฐ ์ถ์ถ ๋ถ๋ถ์์ ์ด ์ด๋ฆ์ ์ง์ ์ฌ์ฉํ์ง ์๊ณ , ์ฌ์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ํ๋์ฝ๋ฉ์ ์ค์ผ ์ ์๋๋ก ๋ณ๊ฒฝํ๋ค.
'๐ป Programming > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ค์ด๋ฒ Geocoding API๋ฅผ ์ฌ์ฉํ์ฌ ์ฃผ์๋ฅผ ์ขํ๋ก ๋ณํํ๊ธฐ (1) | 2024.08.07 |
---|---|
[Python] googletrans๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญ ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ (1) (0) | 2024.07.03 |