MYSQL 백업/복구 + 특정테이블만

DB 데이터베이스|2023. 8. 3. 21:42
300x250

 

naver db에서 member_table만 백업

mysqldump -u root -p naver member_table > member_table.sql

 

naver 라는 db 백업

mysqldump -u root -p naver > naber_db.sql

 

 

전체 파일 복구 / 특정 테이블만 복구

(어차피 sql 파일에는 스트립트 파일이 들어가있어서 똑같음)

mysql -u root -p naver < naver_db.sql
mysql -u root -p naver < member_table.sql

 

300x250

댓글()

mysql 테이블 단위 내용 분리

DB 데이터베이스|2023. 8. 3. 20:57
300x250
sed -n -e '/DROP TABLE IF EXISTS `goods`/,/UNLOCK TABLES/p' mysqlback_20230803.sql > goods.sql;

위 명령어는 주어진 디비명.dump 파일에서 '테이블명'이라는 텍스트를 포함한 DROP TABLE 문부터 UNLOCK TABLES 문까지의 데이터를 추출하여 디비명.테이블명.dump 파일로 저장하는 작업을 수행합니다.

여기서 각 부분의 의미는 다음과 같습니다:

  • sed: 텍스트 스트림을 필터링하고 변환하는 데 사용되는 유닉스 명령어인 'sed'를 실행합니다.
  • -n: 기본 출력을 비활성화합니다. 즉, 텍스트가 처리되지 않은 경우 출력되지 않습니다.
  • -e: 스크립트를 지정하여 명령어를 실행합니다.
  • '/DROP TABLE.*테이블명/,/UNLOCK TABLES/p': 디비명.dump 파일에서 'DROP TABLE'과 '테이블명'이라는 문자열 사이의 모든 행을 찾아서 'UNLOCK TABLES'가 나오기 전까지의 행들과 함께 출력합니다.
  • 디비명.dump: 원본 데이터가 있는 파일명으로, 이 파일에서 데이터를 추출하고 처리합니다.
  • > 디비명.테이블명.dump: 추출한 데이터를 디비명.테이블명.dump 파일로 리다이렉션하여 저장합니다.

이렇게 하면 '디비명.테이블명.dump' 파일에 '테이블명'이라는 문자열을 포함하는 DROP TABLE 문과 그 다음 행들이 저장됩니다. 만약 해당 문자열이 존재하지 않으면 아무런 데이터도 파일에 저장되지 않습니다. 따라서 실제 사용하기 전에 반드시 '디비명', '테이블명' 등을 실제 데이터베이스 및 테이블 이름으로 수정하여 사용하시기 바랍니다.

300x250

댓글()

select 절 속성 필드에서 사용하는 Scalar Subquery

DB 데이터베이스|2022. 9. 18. 17:36
300x250

 

member, log_view, trade
회원정보, 회원이 조회한 제품 로그, 회원이 구매한 제품 목록
이렇게 3개의 테이블이 있다.

보통은 

select * member as a
left join log_view as b
on a.userid = b.userid

left join trade as c
on a.userid = c.userid

 

이런식으로 join 쿼리를 사용하여 결과를 낼수 있는데

 

만약 회원아이디별 제품 조회수, 거래건수를 뽑을려고 하면

Scalar Subquery를 사용하여 심플하게 뽑을수 있다.

 

기존의

select userid from meber 쿼리에서

속성 쿼리 2개만 아래와같이 추가하면 아주 간단!

select userid
, ( select count(*) cnt from log_view where log_view.userid = member.userid ) cnt_view
, ( select count(*) cnt from trade where trade .userid = member.userid ) cnt_trade
from member

예상되는 결과는 아래와 같다.

userid cnt_view cnt_trade
test1 5 6
test2 2 8

 

간단하쥬 ㅋㅋㅋ

300x250

'DB 데이터베이스' 카테고리의 다른 글

MYSQL 백업/복구 + 특정테이블만  (0) 2023.08.03
mysql 테이블 단위 내용 분리  (0) 2023.08.03
DB 인덱스 추가 쿼리  (0) 2022.08.17

댓글()

DB 인덱스 추가 쿼리

DB 데이터베이스|2022. 8. 17. 17:42
300x250

 

 

 

SQLLite 라는 프로그램 기준으로 작성하였습니다.

 

 

[ 기본 테이블 구조 ]

 

쿼리를 날리기전 테이블 구조는 아래와 같습니다.

테이블 생성 쿼리

create table back_data(volume_sq integer primary key, data_dt datetime, value float, flow float, type integer )

 

 

 

인덱스 추가

 

data_dt, type 2개 항목을 인덱스 추가 하겠습니다. 추가되는 인덱스 명은 index1 입니다.

 

create index index1 ON back_data(data_dt, type)

                   [ 인덱스명]      [테이블명(컬럼, 컬럼 ...)]

 

 

인덱스를 추가하게 되면 인덱스 명 Index1 이라는 항목에 data_dt, type 2항목이 추가된걸 볼 수 있습니다.

 

 

 

 

 

 

300x250

댓글()