MYSQL 리눅스에서 .sql 파일 일괄 실행하는 방법
- Database
- 2023. 8. 25.
리눅스에서 .sql 파일을 실행하여 mysql 데이터베이스에 쿼리 할 수 있습니다. mysql에 접속하고 source [sql 파일 경로]로 입력하면 됩니다. 만약 파일이 여러 개면 ;로 이어서 쓰면 됩니다. source [파일.sql]; sourrce [파일2.sql]; … 처럼요. 하지만 이 방법도 실행해야 하는 쿼리가 많아지면 손이 많이 갑니다.
리눅스 MYSQL 쿼리 파일 일괄 실행
그럴 땐 리눅스에서 cat 명령어로 쿼리할 sql의 내용을 합치고 파이프라인(l)을 이용해서 mysql 데이터베이스에 쿼리를 실행할 수 있습니다. sql의 내용은 문자열로 구성되어 있기 때문에 cat으로 처리가 가능합니다.
예를 들어, createtable_A.sql, createtable_B.sql, createtable_C.sql 라는 파일이 있습니다. 각 파일을 cat으로 아래와 같이 이어서 출력할 수 있습니다.
[root@localhost exeQuery]# ll
total 12
-rwxr-xr-x. 1 root root 118 Aug 23 07:59 createtable_A.sql
-rwxr-xr-x. 1 root root 139 Aug 23 07:59 createtable_B.sql
-rwxr-xr-x. 1 root root 116 Aug 23 08:00 createtable_C.sql
[root@localhost exeQuery]# cat createtable_A.sql createtable_B.sql createtable_C.sql
CREATE TABLE table_A (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
description TEXT
);
CREATE TABLE table_B (
id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL
);
CREATE TABLE table_C (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
content TEXT
);
cat [파일명1] [파일명2] … | mysql 형태
이제 이 쿼리를 mysql의 test 계정으로 TEST 데이터베이스에 실행해 보겠습니다. 되도록 -vv 옵션을 함께 사용해서 쿼리 결과를 출력하는 걸 추천드립니다.
[root@localhost create]# cat createtable_A.sql createtable_B.sql createtable_C.sql | mysql -u test -p TEST -vv
Enter password:
--------------
CREATE TABLE table_A (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
description TEXT
)
--------------
Query OK, 0 rows affected
--------------
CREATE TABLE table_B (
id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL
)
--------------
Query OK, 0 rows affected
--------------
CREATE TABLE table_C (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
content TEXT
)
--------------
Query OK, 0 rows affected
Bye
실제로 mysql에 접속해보면 테이블이 잘 들어간 걸 볼 수 있습니다.
cat *sql | mysql 형태
*.sql 패턴을 이용하면 특정 경로에 있는 .sql 확장자를 한번에 쿼리 할 수 있습니다.
[root@localhost drop]# cat *.sql | mysql -u test -p TEST -vv
Enter password:
--------------
DROP TABLE IF EXISTS table_A
--------------
Query OK, 0 rows affected, 1 warning
--------------
DROP TABLE IF EXISTS table_B
--------------
Query OK, 0 rows affected, 1 warning
--------------
DROP TABLE IF EXISTS table_C
--------------
Query OK, 0 rows affected, 1 warning
Bye
반응형
'Database' 카테고리의 다른 글
MSSQL 테이블 백업하는 방법 (SELECT * INTO) (0) | 2023.08.28 |
---|---|
MSSQL SHRINK 작업이란? DB 용량 줄이기 (0) | 2023.08.28 |
오라클 SID란? Service Name과 차이 (0) | 2023.08.08 |
DB View 테이블이란? 만드는 방법 (0) | 2023.07.31 |
오라클(Oracle) 문자열 연결하는 방법 || (0) | 2023.07.22 |