[zerobase_데이터 취업스쿨_스터디노트] 26. AWS RDS 에 table, column 추가하고 분석하기

김소희·2023년 12월 31일
0

study_note

목록 보기
26/50
처음은 늘 어려운거다.............걱정하지말자..........

오늘은 sql 심화 test 때문에 하루를 다 쓴 것 같다.

처음에 csv 파일 3개를 주셨는데 그거를 어떻게 sql 파일로 바꿨더라? 하면서 chat gpt 에게 물어물어

기억을 되살려냈다.. 인공호흡..

먼저는 aws rds의 db로 접속해서 table 생성을 미리 해두었다.

CREATE TABLE SANDWICH (
 `RANK` INT,
 .
 .
 .
 );

해주면 컬럼이 생성이 된다. 그 후에 컬럼의 내용물인 ROW 값들을 넣어줘야 한다.

Rank,Cafe,Menu,Price,Address
1,Old Oak Tap,BLT,10.,2109 W. Chicago Ave
2,Au Cheval,Fried Bologna,9.,800 W. Randolph St
3,Xoco,Woodland Mushroom,9.50, 445 N. Clark St
4,Al’s Deli,Roast Beef,9.40, 914 Noyes St
5,Publican Quality Meats,PB&L,10.,825 W. Fulton Mkt
6,Hendrickx Belgian Bread Crafter,Belgian Chicken Curry Salad,7.25, 100 E. Walton St
7,Acadia,Lobster Roll,16.,1639 S. Wabash Ave

대략 이런 내용인데, 이걸

INSERT INTO SANDWICH(`Rank`,Cafe,Menu,Price,Address) VALUES ( 1,Old Oak Tap,BLT,10.,2109 W. Chicago Ave) 

이런 폼의 SQL 파일로 생성해주어야 DB 에 SOURCE 문으로 한번에 추가해 넣을 수 있다.

그런데 계속 오류가 났다. 명령문에 문제는 없었는데 RANK 라는 함수가 이미 내장되어 있어서 중복이 되는 에러였다.

그래서 RANK 컬럼에는 무조건 RANK 이렇게 벡틱? 백틱? 으로 감싸주어야 실행이 제대로 되었다.

SQL 파일로 만들어야 하기에 간단한 python 코드를 짰다.

import csv
import pandas as pd

(1) movie

# fn = pd.read_csv('movie.csv', encoding='utf-8')

# fn 을 한 줄씩 읽고 sql insert 문으로 변경
# date,name,point 2017-12-01,뷰티풀 투모로우,9.36 / 

# for i in range(len(fn)):
#     print("INSERT INTO movie (date,name,point) VALUES ('" + fn['date'][i] + "','" + fn['name'][i] + "'," + str(fn['point'][i]) + ");")
    
    
(2) def
    
fn = pd.read_csv('def.csv', encoding='utf-8')

# fn 을 한 줄씩 읽고 sql insert 문으로 변경
# 코드,명칭,주소,전화번호,영업시간,재고량 INSERT INTO def (코드,명칭,주소,전화번호,영업시간,재고량) VALUES (A0013146,현풍(마산방향),대구 달성군 현풍읍 성하길 48,053-614-2437,매일 24시간,1300);


for i in range(len(fn)):
    print("INSERT INTO def (Code, Name,Address,PhoneNumber,BusinessHours,StockAmount) VALUES ('" + fn['코드'][i] + "','" + fn['명칭'][i] + "','" + fn['주소'][i] + "','" + fn['전화번호'][i] + "','" + fn['영업시간'][i] + "'," + str(fn['재고량'][i]) + ");")
    



sandwich 는 성공적으로 만들었고, 1번 movie와 2번 def 파일도 만들어야 하기에 두 가지를 같이 썼다.

저렇게 만들어서 실행하니

내용물이 잘 출력이 되었다.
(물론......엄청난 시행착오들이 있었지만................결론은 잘 해결 됨 ㅎㅎ)

아 ! 그리고 인코딩 문제도 있었는데

mysql aws rds 로 접속할 때 옵션을 꼭 추가해 주어야 한다.

mysql -h "database-1.ct44moim29xl.eu-north-1.rds.amazonaws.com" -u admin -p zerobase 
--default-character-set utf8mb4 < def.sql

하거나

mysql -h "database-1.ct44moim29xl.eu-north-1.rds.amazonaws.com" -u admin -p zerobase --default-character-set utf8mb4 < def.sql
mysql -h "database-1.ct44moim29xl.eu-north-1.rds.amazonaws.com" -u admin -p zerobase --default-character-set utf8mb4

이렇게 하거나 암튼

--default-character-set utf8mb4

위의 옵션을 꼭!!!!!!!!!!!!!!! 추가해줘야 한다!!!!!!!!!!!!!!

이거때문에 2시간을 날렸다 후

그리하여!!!! 인코딩 문제 + sql 불러오는 문제 모두 ㅠㅠ 3~4시간에 걸쳐 완성...

이제 test를 마무리하러 가야겠다.

profile
AI 개발자로 가는 길 두렵지 않아요

0개의 댓글