Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

mysqlimport 명령어로 CSV 파일을 MySQL 테이블에 가져오는 방법

CSV 파일을 MySQL 테이블로 가져오려면 먼저 쉼표(,)로 구분된 값들이 담긴 CSV 파일이 준비되어 있어야 하며, 동시에 해당 데이터를 담을 MySQL 테이블도 같은 이름과 구조로 미리 생성되어 있어야 합니다. 아래 예제를 통해 전체 과정을 살펴보겠습니다.

예제: CSV 파일 준비

다음과 같은 데이터가 들어 있는 Address.CSV 파일이 있다고 가정해 보겠습니다.

Name,LastName,Address
Mohan, Sharma, Sundernagar
Saurabh, Arora, Chandigarh
Rajesh, Singh, Lucknow

MySQL 테이블 구조 확인

이 데이터를 가져올 MySQL 테이블 Address의 구조는 다음과 같습니다. CSV 파일의 첫 번째 행(헤더)을 제외한 나머지 값들이 각 컬럼에 순서대로 매핑될 수 있도록 컬럼 순서와 개수가 일치해야 합니다.

mysql> DESCRIBE ADDRESS;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| Name     | varchar(20) | YES  |     | NULL    |       |
| LastName | varchar(20) | YES  |     | NULL    |       |
| Address  | varchar(20) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysqlimport 실행하기

이제 mysqlimport 명령어와 몇 가지 옵션을 조합하여 address.csv 파일의 값을 'Address' 테이블로 가져올 수 있습니다.

C:\mysql\bin> mysqlimport --ignore-lines=1 --fields-terminated-by=, --verbose --local -u root query C:/mysql/bin/mysql-files/address.csv

Connecting to localhost

Selecting database query

Loading data from LOCAL file: C:/mysql/bin/mysql-files/address.csv into address

query.address: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
Disconnecting from localhost

주요 옵션 설명

  • --ignore-lines=1: 첫 번째 줄(컬럼 헤더)은 건너뛰고 두 번째 줄부터 데이터를 읽어들입니다.
  • --fields-terminated-by=,: 필드 구분자를 쉼표(,)로 지정합니다. CSV 파일이므로 필수적인 옵션입니다.
  • --local: 클라이언트 쪽 로컬 파일에서 데이터를 읽어 서버로 전송합니다.
  • --verbose: 진행 상황을 자세히 출력합니다.
  • -u root query: root 계정으로 접속하며, 데이터를 가져올 대상 데이터베이스는 'query'입니다.

참고로 mysqlimport는 파일명에서 확장자를 제거한 이름을 테이블명으로 인식하므로, address.csv 파일은 반드시 address라는 이름의 테이블로 임포트됩니다. 따라서 파일명과 테이블명을 일치시켜 주는 것이 중요합니다.

결과 확인

임포트가 완료된 후 테이블을 조회하면 CSV 파일의 값들이 정상적으로 들어간 것을 확인할 수 있습니다.

mysql> SELECT * FROM Address;
+---------+----------+-------------+
| Name    | LastName | Address     |
+---------+----------+-------------+
| Mohan   | Sharma   | Sundernagar |
| Saurabh | Arora    | Chandigarh  |
| Rajesh  | Singh    | Lucknow     |
+---------+----------+-------------+
3 rows in set (0.00 sec)

위 결과 집합을 보면 CSV 파일의 값들이 오류나 경고 없이 MySQL 테이블에 성공적으로 임포트되었음을 알 수 있습니다. Records: 3, Deleted: 0, Skipped: 0, Warnings: 0이라는 출력 역시 모든 레코드가 정상 처리되었음을 의미합니다.