1. MySQL에 CSV 파일 가져오기 소개
CSV 파일을 MySQL에 가져오는 것은 데이터 관리를 효율화하고 수동 데이터 입력의 필요성을 없애는 강력한 방법입니다. 예를 들어, 여러 데이터 소스에서 수집된 정보를 대량으로 데이터베이스에 가져와야 하거나 외부 시스템의 데이터를 자동으로 처리해야 할 때 CSV 가져오기는 매우 유용합니다.
CSV 가져오기 일반 사용 사례
- 대량 데이터 처리 : 수천 개의 레코드를 수동으로 입력하는 대신 CSV 가져오기를 사용해 빠르게 처리할 수 있습니다.
- 데이터 마이그레이션 : 다른 시스템에서 내보낸 데이터를 MySQL에 가져올 때 편리합니다.
- 정기 데이터 업데이트 : 주기적인 데이터 업데이트가 필요한 시스템은 CSV 파일을 사용해 프로세스를 자동화할 수 있습니다.
2. 사전 요구 사항
CSV 파일을 MySQL에 가져오기 전에 여러 설정 및 준비가 필요합니다. 이는 원활하고 오류 없는 데이터 가져오기 과정을 보장합니다.
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 가져오기
CSV 파일을 MySQL에 가져오는 가장 일반적인 방법은 LOAD DATA INFILE 명령을 사용하는 것입니다. 이 명령을 사용하면 대량의 데이터를 데이터베이스에 손쉽게 로드할 수 있습니다.
3.1 기본 구문
다음은 CSV 파일을 MySQL에 가져올 때 사용되는 기본 구문입니다.
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. 일반적인 문제 해결
아래는 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 가져오기 절차
여기에서는 실제 CSV 파일을 MySQL에 가져오는 단계별 절차를 설명합니다.
5.1 CSV 파일 준비
다음 내용으로 CSV 파일(data.csv)을 생성합니다.
id,name,age
1,Taro Yamada,28
2,Hanako Sato,34
3,Ichiro Tanaka,45
5.2 명령 실행
아래 명령을 실행하여 만든 CSV 파일을 users 테이블에 가져옵니다.
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
이 명령은 CSV 파일의 두 번째 행부터 데이터를 users 테이블에 삽입합니다.
6. 고급: 오류 처리 및 중복 데이터 방지
이 섹션에서는 CSV 가져오기 중 발생할 수 있는 오류를 처리하는 방법과 중복 데이터를 다루는 방법을 설명합니다.
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 데이터베이스에서 데이터를 내보내는 방법에 대해서도 자세히 설명할 예정입니다. 데이터 관리 역량을 지속적으로 향상시키세요.


