방법 1: LOAD DATA INFILE을 사용한 데이터 적재
이 방법은 MySQL의 LOAD DATA INFILE 명령을 사용하여 데이터를 파일에서 직접 데이터베이스 테이블로 로드하는 방법입니다.
-- LOAD DATA INFILE을 사용하여 데이터 로드
SHOW VARIABLES LIKE 'FOREIGN_KEY_CHECKS';
SET foreign_key_checks = 0;
LOAD DATA INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\tft_match_traits_20230802.csv'
INTO TABLE tftdb.match_trait
FIELDS TERMINATED BY ','
IGNORE 1 LINES;
SET foreign_key_checks = 1;
SHOW VARIABLES LIKE 'FOREIGN_KEY_CHECKS';
위의 SQL 코드는 다음과 같은 역할을 합니다:
LOAD DATA INFILE: 데이터 파일을 로드하는 MySQL 명령어입니다.
'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\tft_match_players_20230802.csv': 로드할 데이터 파일의 경로를 지정합니다.
- 파일의 경로는 C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\ 하위에만 가능합니다.
INTO TABLE tftdb.match_player: 데이터를 적재할 데이터베이스 테이블을 지정합니다.
FIELDS TERMINATED BY ',': 각 필드가 쉼표로 구분되었음을 명시합니다.
IGNORE 1 LINES: 데이터 파일의 첫 번째 줄을 무시하고 데이터 로드를 시작합니다.
방법 2: pandas와 SQLAlchemy를 사용한 데이터 적재
이 방법은 Python 라이브러리인 pandas와 SQLAlchemy를 사용하여 데이터를 데이터베이스 테이블로 적재하는 방법입니다.
import pandas as pd
from sqlalchemy import create_engine
# MySQL 데이터베이스 연결 정보
json_file_path = r'.\product\results\tft_players.json'
username = 'root'
password = 'xxxx'
host = 'localhost'
port = '3306'
database = 'tftdb'
# MySQL 연결 문자열 생성
engine = create_engine(f"mysql+mysqlconnector://{username}:{password}@{host}:{port}/{database}")
# DataFrame 생성
df = pd.read_json(json_file_path)
# DataFrame을 MySQL 데이터베이스의 테이블로 저장
table_name = 'player'
df.to_sql(name=table_name, con=engine, if_exists='append', index=False)
위의 Python 코드는 다음과 같은 역할을 합니다:
import pandas as pd: pandas 라이브러리를 임포트합니다.
from sqlalchemy import create_engine: SQLAlchemy의 create_engine 함수를 임포트하여 MySQL 데이터베이스에 연결합니다.
json_file_path = r'.\product\results\tft_players_edit.json': 읽어올 JSON 파일의 경로를 지정합니다.
engine = create_engine(f"mysql+mysqlconnector://{username}:{password}@{host}:{port}/{database}"): MySQL 데이터베이스에 연결하는 엔진을 생성합니다.
df = pd.read_json(json_file_path): JSON 파일을 pandas DataFrame으로 읽어옵니다.
df.to_sql(name=table_name, con=engine, if_exists='append', index=False): DataFrame을 MySQL 데이터베이스의 테이블로 저장합니다. if_exists 매개변수가 'append'로 설정되어 있으므로 데이터가 테이블에 추가로 적재됩니다.
이제 각 방법이 어떻게 동작하는지 이해하실 수 있을 것입니다.
참고:
https://dev.mysql.com/doc/refman/8.0/en/load-data.html
해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.
'Big Data > Database' 카테고리의 다른 글
REGEXP (0) | 2023.08.04 |
---|---|
CASE WHEN (0) | 2023.08.04 |
MySQL에서 UnixTime (0) | 2023.07.31 |
LAG & LEAD 함수 (0) | 2023.07.27 |
WINDOW 절의 사용 (0) | 2023.07.27 |