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

mysqlimport 명령어로 여러 MySQL 테이블에 데이터 한 번에 업로드하기

mysqlimport 유틸리티를 활용하면 여러 개의 MySQL 테이블에 데이터를 동시에 업로드할 수 있습니다. 하나의 명령문에 여러 파일 경로를 나열하기만 하면 되는데요, 아래 예시를 통해 구체적인 사용 방법을 살펴보겠습니다.

예시: 두 개의 데이터 파일 준비

먼저 업로드할 데이터가 담긴 두 개의 텍스트 파일을 준비합니다.

첫 번째 파일 — student_tbl.txt

1     Saurav     11th
2     Sahil      11th
3     Digvijay   11th

두 번째 파일 — house.txt

1  Furniture
2  Television
3  Refrigerator

데이터를 저장할 MySQL 테이블 구조 확인

위 데이터를 저장할 두 개의 테이블 구조는 다음과 같습니다.

mysql> DESCRIBE Student1_tbl;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| RollNo | int(11)     | YES  |     | NULL    |       |
| Name   | varchar(20) | YES  |     | NULL    |       |
| Class  | varchar(20) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.06 sec)

mysql> DESCRIBE House;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| Sr    | int(11)     | YES  |     | NULL    |       |
| Name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysqlimport 실행 방법

이제 다음 명령어 하나만으로 두 테이블에 데이터를 동시에 업로드할 수 있습니다. 핵심은 여러 파일 경로를 공백으로 구분하여 함께 지정하는 것입니다.

C:\mysql\bin>mysqlimport -u root query C:/mysql/bin/mysql-files/student_tbl.txt C:/mysql/bin/mysql-files/house.txt
query.student_tbl: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
query.house: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0

명령 실행 결과를 보면 각 파일마다 처리된 레코드 수(Records), 삭제된 레코드(Deleted), 건너뛴 레코드(Skipped), 경고(Warnings)가 출력됩니다. 여기서는 두 테이블 모두 3개의 레코드가 오류 없이 정상적으로 삽입되었습니다.

업로드 결과 확인

실제로 데이터가 잘 들어갔는지 SELECT 문으로 확인해 보겠습니다.

mysql> Select * from House;
+------+--------------+
| Sr   | Name         |
+------+--------------+
| 1    | Furniture    |
| 2    | Television   |
| 3    | Refrigerator |
+------+--------------+
3 rows in set (0.00 sec)

mysql> Select * from student1_tbl;
+--------+----------+-------+
| RollNo | Name     | Class |
+--------+----------+-------+
| 1      | Saurav   | 11th  |
| 2      | Sahil    | 11th  |
| 3      | Digvijay | 11th  |
+--------+----------+-------+
3 rows in set (0.00 sec)

정리 및 주의 사항

mysqlimport는 기본적으로 파일 이름과 테이블 이름이 일치해야 동작합니다. 즉, student_tbl.txt 파일은 student_tbl 테이블로, house.txt 파일은 house 테이블로 자동 매핑됩니다. 따라서 파일명을 대상 테이블 이름과 동일하게 지정하는 것이 중요합니다.

또한 자주 사용하는 주요 옵션은 다음과 같습니다.

  • -u : 접속할 MySQL 사용자 계정 지정
  • -p : 비밀번호 입력 프롬프트 표시
  • --local : 클라이언트 측 로컬 파일을 읽어 업로드 (LOAD DATA LOCAL)
  • --fields-terminated-by : 필드 구분자 지정 (기본값은 탭)
  • --lines-terminated-by : 행 구분자 지정

이처럼 mysqlimport를 사용하면 LOAD DATA INFILE 문을 일일이 작성하지 않고도 명령줄에서 여러 테이블에 대한 대량 데이터 적재를 빠르고 간편하게 처리할 수 있습니다.