1. MySQL에 CSV 파일 가져오기 소개
MySQL에 CSV 파일을 가져오는 것은 데이터 관리를 간소화하고 수동 데이터 입력의 필요성을 없애는 강력한 방법입니다. 예를 들어, 여러 데이터 소스에서 수집된 정보를 데이터베이스에 대량으로 로드하거나 외부 시스템에서 데이터를 자동으로 처리할 때 CSV 가져오기가 매우 유용합니다.
CSV 가져오기의 일반적인 사용 사례
- 대규모 데이터셋 처리 : 수천 개의 레코드를 수동으로 입력하는 대신 CSV 가져오기를 사용하여 빠르게 처리할 수 있습니다.
- 데이터 마이그레이션 : 다른 시스템에서 내보낸 데이터를 MySQL로 가져오는 데 편리합니다.
- 정기적인 데이터 업데이트 : 빈번한 업데이트가 필요한 시스템에서 CSV 파일을 사용한 자동화가 매우 효과적입니다.
2. 사전 준비 사항
MySQL에 CSV 파일을 가져오기 전에 원활한 프로세스를 보장하기 위해 특정 구성과 준비가 필요합니다.
2.1 필요한 환경
- MySQL 서버 설치 MySQL이 제대로 설치되어 있어야 합니다. Windows, macOS 또는 Linux 환경에서 MySQL이 실행 중인지 확인하세요.
- 필요한 권한 확인 CSV 파일을 가져오려면 MySQL 사용자가 적절한 권한을 가져야 하며, 특히
LOAD DATA INFILE권한이 필요합니다. 이 권한이 없으면 가져오기가 거부될 수 있습니다.
2.2 CSV 파일 형식
- 구분자 CSV 파일은 일반적으로 쉼표로 구분되지만, 때때로 탭이나 세미콜론이 사용됩니다. 가져오기 전에 구분자를 항상 확인하세요.
- 인코딩 확인 CSV 파일이 다른 문자 인코딩(예: UTF-8, Shift-JIS)을 사용하면 가져오기 중에 문자 손상이 발생할 수 있습니다. 파일 인코딩을 미리 확인하고 필요 시 올바른 인코딩으로 변환하세요.

3. LOAD DATA INFILE 명령어를 사용한 CSV 가져오기
MySQL에 CSV 파일을 가져오는 가장 일반적인 방법은 LOAD DATA INFILE 명령어를 사용하는 것으로, 대량의 데이터를 테이블에 쉽게 대량 로드할 수 있습니다.
3.1 기본 구문
MySQL에 CSV 파일을 가져오는 기본 구문을 아래에 보여드립니다:
LOAD DATA INFILE '/path/to/file.csv' INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n';
FIELDS TERMINATED BY: 필드 간에 사용되는 구분자를 정의합니다. 쉼표가 가장 일반적입니다.LINES TERMINATED BY: 줄 구분자를 정의하며, 일반적으로n(새 줄)입니다.
3.2 예제 실행
다음 예제에서는 user_data.csv라는 파일을 users 테이블로 가져옵니다:
LOAD DATA INFILE '/path/to/user_data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES;
IGNORE 1 LINES: 첫 번째 행(헤더 행)을 건너뜁니다. CSV의 첫 번째 줄에 열 이름이 포함된 경우 유용합니다.
3.3 파일 경로 및 권한 주의사항
파일은 MySQL 서버가 액세스할 수 있는 위치에 있어야 합니다. 서버가 파일을 읽을 수 없으면 클라이언트 측에서 데이터를 가져오기 위해 LOAD DATA LOCAL INFILE을 사용하세요.
4. 일반적인 문제 해결
MySQL에 CSV 파일을 가져올 때 발생하는 전형적인 문제에 대한 해결책을 아래에 나열합니다.
4.1 파일 경로 문제
파일 경로가 잘못된 경우 The MySQL server is not permitted to read from the file 오류가 발생할 수 있습니다. 이 경우 서버에서 올바른 경로를 확인하거나 클라이언트 측에서 파일을 로드하기 위해 LOAD DATA LOCAL INFILE 옵션을 사용하세요.
LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n';
4.2 문자 인코딩 문제
파일이 다른 인코딩으로 저장된 경우 가져오기 중에 깨진 텍스트가 나타날 수 있습니다. 이를 방지하려면 파일 인코딩을 확인하고 MySQL에서 적절한 문자 세트를 설정하세요:
SET NAMES 'utf8mb4';

5. 실전 예제: CSV 파일 가져오기
MySQL에 CSV 파일을 가져오는 단계별 프로세스를 살펴보겠습니다.
5.1 CSV 파일 준비
다음 내용을 가진 CSV 파일(data.csv)을 만듭니다:
id,name,age
1,Taro Yamada,28
2,Hanako Sato,34
3,Ichiro Tanaka,45
5.2 명령어 실행
파일을 users 테이블에 가져오려면, 다음 명령을 실행하십시오:
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES;
이 명령은 두 번째 줄부터 시작하는 모든 행을 users 테이블에 가져옵니다.
6. 고급: 오류 처리 및 중복 데이터
CSV 파일을 MySQL에 가져올 때 오류와 중복 데이터를 처리하는 방법은 다음과 같습니다.
6.1 중복 데이터 처리
동일한 키를 가진 레코드가 이미 존재하는 경우, REPLACE 옵션을 사용하여 기존 행을 새 데이터로 덮어쓸 수 있습니다:
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES
REPLACE;
6.2 오류 처리
오류가 발생해도 프로세스를 계속 진행하려면 IGNORE 옵션을 사용하십시오. 옵션은 문제 있는 행을 건너뛰면서 나머지 데이터를 계속 가져옵니다:
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES
IGNORE;

7. 결론
CSV 파일을 MySQL에 가져오는 것은 대규모 데이터셋을 관리하고 시스템 간에 데이터를 효율적으로 마이그레이션하는 강력한 도구입니다. 기본을 숙달하고 오류와 중복을 처리하는 방법을 배우면 신뢰할 수 있고 안정적인 데이터 가져오기를 보장할 수 있습니다.
앞으로의 기사에서는 MySQL 데이터베이스에서 데이터를 내보내는 방법도 다루어 데이터 관리 역량을 더욱 향상시킬 것입니다.


