RDS란?
RDS, 즉 Relational Database Service는 AWS 중 하나로 관계형 데이터베이스를 의미한다.
즉, 유저가 사용하기 쉽도록 인프라 등을 자동화 시켜주고 유저들은 앤드포인트로 접속할 수 있는 데이터베이스를 제공받게 된다.
AWS와 같은 클라우드 상에서 관계형 데이터베이스를 사용하면, DB 설정 등과 같은 관리 작업을 자동화할 수 있고, 크기 조정이 가능한 용량을 제공받을 수 있다.
오늘은 이러한 RDS에 csv 파일을 올리고자 한다.
올리고자 하는 데이터는 약 1.2GB로 굉장히 큰 용량을 차지한다.
이렇게 csv 데이터를 RDS에 올리게 되면, 다른 사람들과 쉽게 데이터를 공유하고 쿼리문을 작성할 수 있으며,
데이터에 쉽게 접근하여 모두가 볼 수 있는 대시보드 상에도 공유할 수 있다.
이 과정에서 로컬 PC에 있는 csv 파일을 업로드하여도 좋지만,
좀 더 편리하게 사용하기 위해 AWS의 S3에 업로드해 둔 csv 파일을 RDS에 올려보겠다!
다른 방법도 많지만, 간단하게 파이썬 파일을 이용해 작업해보도록 하자.
S3에 관한 설명은 이전 글에 있다!
2024.06.23 - [AWS] - [AWS] S3 개념 및 버킷 만들기 (파일 업로드)
이제 S3의 CSV 파일을 파이썬 코드를 이용하여 RDS에 올려보자.
먼저, 파이썬 파일을 하나 만든다.
다음으로 터미널을 열어 필요한 라이브러리를 설치한다.
pip install boto3 pandas sqlalchemy pymysql
자신의 access key 등의 정보에 맞게 아래 코드를 수정하여 실행한다.
import boto3
import pandas as pd
from io import StringIO
from sqlalchemy import create_engine
from botocore.exceptions import NoCredentialsError
# AWS 자격 증명 설정 (환경 변수나 AWS 설정 파일을 사용할 수도 있음)
aws_access_key_id = 'your_access_key_id'
aws_secret_access_key = 'your_secret_access_key'
region_name = 'your_region_name'
# S3 클라이언트 생성
s3 = boto3.client('s3', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name=region_name)
# S3 버킷 이름과 파일 경로
bucket_name = 'your-bucket-name'
file_key = 'path/to/yourfile.csv'
# RDS 연결 정보
db_user = 'your_db_username'
db_password = 'your_db_password'
db_endpoint = 'your_db_endpoint'
db_name = 'your_db_name'
try:
# S3에서 파일 가져오기
obj = s3.get_object(Bucket=bucket_name, Key=file_key)
data = obj['Body'].read().decode('utf-8')
# pandas를 사용하여 CSV 데이터 읽기
df = pd.read_csv(StringIO(data))
print("Data read from S3:")
print(df.head())
# 정상적으로 데이터를 가져온다면 이 부분이 출력된다.
# SQLAlchemy 엔진 생성
engine = create_engine(f'mysql+pymysql://{db_user}:{db_password}@{db_endpoint}/{db_name}')
# 데이터를 RDS 테이블에 업로드
df.to_sql('your_table_name', engine, index=False, if_exists='replace')
print("Data uploaded successfully to RDS")
except NoCredentialsError:
print("Credentials not available")
except Exception as e:
print(f"An error occurred: {e}")
위의 코드에서 바꿔야할 부분은
- your_access_key_id : IAM access key
- your_secret_access_key : IAM secret access key
- your_region_name: region 이름
- your-bucket-name : S3 버킷 이름
- path/to/yourfile.csv : S3에 올린 CSV 파일 경로
- your_db_username : RDS db username
- your_db_password : RDS password
- your_db_endpoint : RDS endpoint
- your_db_name : RDS DB 이름
- your_table_name : 새롭게 만들 테이블 이름
가 있다.
IAM key에 관한 정보는 처음에 IAM 사용자를 생성할 때 알 수 있으며,
RDS에 관한 정보는 다음과 같이 확인할 수 있다.
버킷 이름과 csv 파일의 경로는 아래와 같이 확인할 수 있다.
필자의 경우 1.25GB의 csv 파일을 RDS에 업로드 하는데 약 23분이 걸렸다.
아마, 필자처럼 큰 파일을 업로드할 때, 데이터의 head 부분만 출력되고 한동안 아무것도 뜨지 않아서
'이게 잘 되는거야?' 라고 생각이 들 것이다. (데이터를 로드하는데도 상당한 시간이 걸린다)
하지만, 데이터가 잘 출력되었다면 정상적으로 되는 것이기 때문에 믿고 기다리면 된다!
이제 RDS에 접속하여 데이터를 확인해보면, 정상적으로 CSV 파일이 업로드된 것을 확인할 수 있다.
끄읏-!
'AWS' 카테고리의 다른 글
[AWS] EC2 인스턴스 위에 Redash 설치하기 (0) | 2024.06.23 |
---|---|
[AWS] S3 개념 및 버킷 만들기 (파일 업로드) (0) | 2024.06.23 |
[AWS] MFA 등록 방법 (0) | 2024.06.13 |