Mysql 실행

화이팅·2023년 1월 17일
0

sql

목록 보기
6/17

sql file 실행

  1. 로그인 이후
mysql> source </path/filename.sql>
mysql> \. </path/filename.sql>
mysql> \. <filename.sql> # 현재 폴더에 파일 있으면 path 생략 가능

% cd sql_ws
sql_ws % mysql -u root -p zerobase
source test01.sql
  1. 외부에서 바로 실행
% mysql -u root -p zerobase < zerobase.sql

- sql파일로 데이터베이스 백업

  1. 전체 백업
% mysqldump -u root -p zerobase > zerobase.sql # 특정 database 백업 ( > : 실행과 반대 )
% mysqldump -u username -p --all-databases > backup.sql # 모든 database 백업
  • 데이터베이스를 백업한 sql file을 실행하여 그 시점으로 복구/ 이전 가능(sql file 실행하는 법과 동일 source zerobase.sql)
sql_ws % mysql -h "앤드포인트" -P 3306 -u admin -p
  1. 테이블 단위 백업
sql_ws % mysqldump -u root -p zerobase celeb > celeb.sql
  1. 데이터 제외하고 테이블 생성 쿼리만 백업 가능(-d)
% mysqldump -d -u username -p dbname tablename > backup.sql # 특정 table 스키마 백업
% mysqldump -d -u username -p dbname > backup.sql # 모든 테이블 스키마 백업

문제.
police_station 테이블 아래 데이터를 insert 하기 위한 sql 파일을 생성하세요.

# vs code에 먼저 작성( insert.sql파일 생성)
insert into police_station VALUES ('서울특별시경찰청','서울시 종로구 사직로8길31');
insert into police_station VALUES ('서울중부경찰서','서울특별시 중구 수표로 27');
insert into police_station VALUES ('서울종로경찰서','서울특별시 종로구 율곡로 46');
insert into police_station VALUES ('서울남대문경찰서','서울특별시 중구 한강대로 410');

# cmd
use zerobse
source insert.sql

select * from police_station;

- 파이썬에서 mysql 사용

  1. mysql driver 설치
pip install mysql-connector-python

1) mysql에 접속하기 위한 코드

import mysql.connector 

mydb=mysql.connector.connect(
	host='<hsotname>',
    user='<username>',
    password='<password>'
    )

# 쿼리 실행 코드

mycursor=mydb.cursor() 
mycursor.execute(<query>)

2) aws rds(database-1) 연결

remote=mysql.connector.connect(
	host="엔드포인트 주소",
    port=3306,
    user='admin',
    password=' '
    database='<database_name>' # 특정 데이터베이스에 접속하기 위한 코드
    )    
  1. 닫기
mydb.close()
remote.close()
  1. sql file 실행 코드
mydb=mysql.connector.connect(
	host=
    user=
    password=
    database=
   )
   
mycursor= mydb.cursor()
sql=open('filename.sql').read()
mycursor.execute(sql,multi=True) # multi=True : 쿼리 여려개 존재
  1. fetch all : 실행이 아닌 조회(select)쿼리시, 데이터를 fetch all을 써서 변수에 담을 수 있음
remote=mysql.connector.connect(
    host="database-1.cwqkoizytqee.ap-northeast-1.rds.amazonaws.com",
    port=3306,
    user='admin',
    password='zerobase',
    database='zerobase'
)
cur=remote.cursor(buffered=True) # 데이터 양 많을 경우 buffered=True
cur.execute('select * from sql_file')

result=cur.fetchall()
for result_iterator in result:
    print(result_iterator)

remote.close()
  1. python with csv
  • csv에 있는 데이터를 python으로 insert
    1) read_csv
import pandas as pd

df=pd.read_csv('police_station.csv')

2) zerobase에 연결

import mysql.connector

conn=mysql.connector.connect(
    host="database-1.cwqkoizytqee.ap-northeast-1.rds.amazonaws.com",
    port=3306,
    user='admin',
    password='zerobase',
    database='zerobase'
)

3) cursor 만들기

cursor=conn.coursor(buffered=True)

4) insert문

sql='insert into police_station values(%s,%s)'

5) 데이터 입력

for i, row in df.iterrows():
	cursor.execute(sql,tuple(row))
    print(tuple(row))
    conn.commit #commit : database에 적용하기 위한 명령어

6) 결과 확인

cursor.execute('select * from police_station')

result=cursor.fetchall()
for row in result:
	print(row)
profile
하하...하.

0개의 댓글