MYSQL 리눅스에서 .sql 파일 일괄 실행하는 방법

리눅스에서 .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에 접속해보면 테이블이 잘 들어간 걸 볼 수 있습니다.

 

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

 

일괄 drop table

반응형

댓글

Designed by JB FACTORY