본문 바로가기
코딩/SQL

[MySQL] SQL file VScode에서 실행하기

by 미생22 2023. 2. 21.
728x90

1. 실습환경 만들기

명령 프롬프트에서 document로 들어간다.

C:\Users\clair>cd Documents

 

sql_ws라고 하는 sql 전용 workspace를 만들어준다.

C:\Users\clair\Documents>mkdir sql_ws

 

sql_ws로 이동한다.

C:\Users\clair\Documents>cd sql_ws

 

sql_ws에서 VScode를 실행시킨다.

C:\Users\clair\Documents\sql_ws>code .

 

2. test sql file 만들기

2-1. 바로 실행하는 방법

test01.sql이라는 파일을 만든다.

그리고 파일 내부에 create table문을 만들어둔다.

VScode에서 terminal을 킨다.

terminal이 없으면 위의 tab에서 Terminal>New Terminal을 클릭해줘도 된다.

terminal 실행 시 powershell로 연결되는데, window 유저인 경우 Git bash로 연결해줘도 좋다고 한다.

이 terminal 연결부분은 terminal 하단 오른쪽에 +버튼을 눌러서 알 수 있다.

 

mysql -u root -p로 mysql에 접속하고, zerobase라는 데이터베이스로 이동한다.

참고로 zerobase라는 데이터베이스를 만드는 방법은

create database zerobase default character set utf8mb4;

이다.

참고로 만약 terminal에서 mysql -u root -p zerobase 라고 -p 뒤에 한 칸 띄고 무언갈 쓰는 경우

mysql -u root -p zerobase

해당 database로 이동한다는 뜻이다.

즉, mysql의 root 계정의 zerobase라는 데이터베이스로 이동하라는 뜻이다.

그럼 zerobase라는 데이터베이스에서 해당 sql파일을 실행시켜보겠다.

현재 경로에 해당 파일이 있기 때문에 바로 파일 이름을 적으면 된다.

mysql> source test01.sql

라고 하고 엔터쳐서 실행시키면 위의 police_station 테이블이 만들어진 것을 확인할 수 있다.

2-2. 외부에서 실행하는 방법

마찬가지로 test02.sql이라는 파일을 만든다.

그리고 파일 내부에 create table문을 만들어둔다.

이후 terminal에 zerobase에 접속하면서 동시에 방금 만든 test02.sql을 실행하는 명령을 한 줄로 작성해보겠다.

mysql -u root -p zerobase < test02.sql

test02.sql 파일을 zerobase에 넣어서(<) 실행하라는 뜻으로 꺽쇠표시를 해준다.

 

3. Database Backup

MySQL에서 만든 데이터를 sql 파일로 백업할 수 있다.

문법은 아래와 같다.

#특정 Database Backup
mysqldump -u username -p dbname > backup.sql

#모든 Database Backup
mysqldump -u username -p --all-databases > backup.sql

여기서 우선 백업하는 명령어는 mysqldump 라고 한다.

위에 파일을 넣는 것과는 반대로 꺽쇠 표시가 파일을 향해있으므로 파일로 백업한다는 뜻이 된다.

참고로, 모든 데이터베이스를 백업하기 위해서는 --all-databases 라고 써준다.

 

예를 들어 우리가 계속 쓰고있던 zerobase 데이터베이스를 백업해보자.

% mysqldump -u root -p zerobase > zerobase.sql

zerobase.sql을 열어보면 아래와 같다.

backup파일을 보면 기존의 table을 지우고(drop table if exists 'tablename') backup을 실행할 때의 시점으로 다시 생성을 한다.

 

다시 AWS RDS로 접속해서 database를 시작해 사용가능 상태로 변경하자.

4. Database Restore

아까 Backup한 데이터베이스를 복구하는 방법을 알아보자.

데이터베이스를 백업한 SQL file을 실행해 그 시점으로 복구하거나 이전할 수 있다. (sql파일을 실행하면 자동복구가 된다.)

우선 AWS RDS가 사용가능한 상태에서 접속한다.

sql_ws % mysql -h "endpoint" -P 3306 -u admin -p
#그냥 따옴표 안되고 쌍따옴표여야함

역시 endpoint 주소는 AWS RDS에서 가져온다.

 

그리고 zerobase 데이터베이스로 이동하자.

use zerobase;

 

아까 backup한 파일을 실행하자.

source zerobase.sql

그럼 아래와 같이 각 행 마다 완료 메세지가 뜬다.

show tables;를 해서 로컬 zerobase에서 썼던 table 목록이 모두 있음을 확인한다.

5. Table Backup

table 단위로도 백업할 수 있다.

dbname 이후 한 칸 더 띄우고 tablename을 쓴 뒤에 '>' 꺽쇠를 쓰고 파일이름을 쓰면 된다.

sql_ws % mysqldump -u username -p dbname tablename > backup.sql

실습해보자.

local 데이터베이스에서 celeb 테이블을 백업한다면,

sql_ws % mysqldump -u root -p zerobase celeb > celeb.sql

6. Table Restore

테이블도 복구할 수 있다. 테이블을 백업한 sql파일을 실행해 해당 테이블을 복구하거나 이전할 수 있다.

일단 AWS RDS(database-1)의 zerobase에서 celeb 테이블을 삭제한다.

sql_ws % mysql -h "endpoint주소" -P 3306 -u admin -p zerobase

접속해주고

drop table celeb;
show tables;

celeb 테이블 삭제 후 확인한다.

이 상태에서 celeb을 복구시킨다.

source celeb.sql;
show tables;
desc celeb;
select * from celeb;

그리고 확인하고 celeb 테이블 항목이 다 있는지 확인해준다.

7. Table Schema Backup

데이터를 제외하고 테이블 생성 쿼리만 백업할 수 있다.

위에 테이블 backup과 하나 다른 점이 -d 라는 옵션을 준다는 것이다.

# 특정 Table Schema Backup
% mysqldump -d -u username -p dbname tablename > backup.sql

# 모든 Table Schema Backup
% mysqldump -d -u username -p dbname > backup.sql

파일을 확인해보면 insert 명령문없이 create 명령문만 적혀있는 것을 확인할 수 있다.

 

 

728x90

'코딩 > SQL' 카테고리의 다른 글

[MySQL] Python으로 SQL 사용하기  (0) 2023.02.28
[MySQL] Table 삭제 시 오류 : foreign key 가 있는데 truncate/delete 하는 경우  (0) 2023.02.24
AWS RDS  (0) 2023.02.21
[SQL] Concat, Alias, Distinct, Limit  (0) 2023.02.20
[SQL] JOIN  (0) 2023.02.20