Query OK, 0 rows affected (0.04 sec)
mysql> show tables;
+--------------------+
| Tables_in_zerobase |
+--------------------+
| celeb |
| person |
| police_station |
| snl_show |
| table1 |
| table2 |
| test1 |
| test2 |
+--------------------+
8 rows in set (0.00 sec)
mysql> desc police_station;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| name | varchar(16) | YES | | NULL | |
| address | varchar(128) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
C:\Users\kd010\Documents\sql_ws>mysql -u root -p zerobase < test02.sql
Enter password: **********
mysql> desc crime_status;
+----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| year | year | YES | | NULL | |
| police_station | varchar(8) | YES | | NULL | |
| crime_type | varchar(16) | YES | | NULL | |
| status_type | char(2) | YES | | NULL | |
| case_number | int | YES | | NULL | |
+----------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

# 특정 데이터베이스에 대해서만 백업
mysqldump -u username -p databasename > backup.sql(백업파일이름)
# 모든 데이터베이스에 대해 백업
mysqldump -u username -p --all-databases > backup.sql
--
-- Table structure for table `celeb`
--
DROP TABLE IF EXISTS `celeb`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `celeb` (
`ID` int NOT NULL AUTO_INCREMENT,
`NAME` varchar(32) NOT NULL DEFAULT '',
`BIRTHDAY` date DEFAULT NULL,
`AGE` int DEFAULT NULL,
`SEX` char(1) DEFAULT NULL,
`JOB_TITLE` varchar(32) DEFAULT NULL,
`AGENCY` varchar(32) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `celeb`
--
LOCK TABLES `celeb` WRITE;
/*!40000 ALTER TABLE `celeb` DISABLE KEYS */;
INSERT INTO `celeb` VALUES (1,'아이유','1993-05-16',29,'F','가수, 탤런트','EDAM엔터테이먼트'),(2,'이미주','1994-09-23',28,'F','가수','울림엔터테이먼트'),(3,'송강','1994-04-23',28,'M','탤런트','나무엑터스'),(4,'강동원','1981-01-18',41,'M','영화배우, 탤런트','YG엔터테이먼트'),(5,'유재석','1972-08-14',50,'M','MC, 개그맨','안테나'),(6,'차승원','1970-06-07',48,'M','영화배우, 모델','YG엔터테이먼트'),(7,'이수현','1999-05-04',23,'F','가수','YG엔터테이먼트');
/*!40000 ALTER TABLE `celeb` ENABLE KEYS */;
UNLOCK TABLES;

AWS RDS의 엔드포인트를 사용하여 MYSQL 실행하기
mysql -h "엔드포인트주소" -P 포트번호 -u 어드민이름 -p


mysqldump -u 유저네임 -p 데이터베이스이름 > backup.sql






mysqldump -d -u 유저네임 -p 데이터베이스이름 테이블이름 > backup.sql


주의> —set-gtid-purged=OFF -h <hostname> -P <port> 를 추가해야함
```sql
mysqldump --set-gtid-purged=OFF -h <host> -P <port> -u admin -p <tablename> > backup.sql

mysql> create database zerodb default character set utf8mb4;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| ZEROBASE |
| information_schema |
| mysql |
| performance_schema |
| sys |
| zerodb |
+--------------------+
6 rows in set (0.01 sec)

mysql> grant all on zerodb.* to 'zero'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> show grants for 'zero'@'%';
+----------------------------------------------------+
| Grants for zero@% |
+----------------------------------------------------+
| GRANT USAGE ON *.* TO `zero`@`%` |
| GRANT ALL PRIVILEGES ON `ZEROBASE`.* TO `zero`@`%` |
| GRANT ALL PRIVILEGES ON `zerodb`.* TO `zero`@`%` |
+----------------------------------------------------+
3 rows in set (0.01 sec)


use zerodb;
source back_up_zerobase.sql




# 일단 로컬환경으로 나간 후
mysqldump --set-gtid-purged=Off -h "엔드포인트" -P <포트> -u admin -p 데이터베이스이름 테이블이름 > backup.sql
mysql> use zerodb;
Database changed
mysql> source police_station_data.sql
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.01 sec)
mysql> select * from police_station;
+--------------------------+-----------------------------------------+
| name | address |
+--------------------------+-----------------------------------------+
| 서울특별시경찰청 | 서울시 종로구 사직로8길 31 |
| 서울중부경찰서 | 서울특별시 중구 수표로 27 |
| 서울종로경찰서 | 서울특별시 종로구 율곡로 46 |
| 서울남대문경찰서 | 서울특별시 중구 한강대로 410 |
+--------------------------+-----------------------------------------+
4 rows in set (0.01 sec)

!pip install mysql-connector-python
## 로컬의 경우
mydb = mysql.connector.connect(
host = "<hostname>",
user = "<username>",
password = "<password>")
remote = mysql.connector.connect(
host = "<host>",
port = port숫자,
user = "<username>",
password = "<password>")
local.close()
remote.close()




cur = remote.cursor()
sql = open("test04.sql").read()
cur.execute(sql)
# 이것을 실행하면 sql객체에 담긴 test04.sql 파일이 생성된다
remote.close()



for result_iterator in cur.execute(sql, multi=True):
이 줄은 쿼리 또는 여러 쿼리의 결과 집합에 대해 반복합니다. multi=True 매개변수는 sql 이 세미콜론으로 구분된 여러 SQL 문을 포함할 수 있음을 나타냅니다. cur 변수는 데이터베이스 연결로부터 얻은 커서 객체입니다.
if result_iterator.with_rows:
현재 result_iterator가 행을 가지고 있는지 확인합니다. 즉, 데이터를 반환하는 SELECT 쿼리 또는 다른 명령의 결과입니다.
print(result_iterator.fetchall())
현재 이터레이터가 가진 모든 결과 행을 출력합니다. fetchall() 함수는 쿼리의 결과로 반환된 모든 데이터를 한 번에 가져오는 데 사용됩니다.
print(result_iterator.statement)
실행된 SQL 문을 출력합니다. 이는 데이터를 반환하지 않는 명령의 경우 유용할 수 있습니다.
remote.commit()
`remote는 데이터베이스 연결 객체로 추정됩니다. commit()함수를 호출하여 트랜잭션을 커밋합니다. 이는INSERT, UPDATE, DELETE 등의 문이 데이터베이스에 영구적으로 반영되도록 합니다.
remote.close()
데이터베이스 연결을 닫습니다. 모든 작업이 끝난 후 연결을 닫는 것은 좋은 습관입니다.
cur = remote.cursor(buffered = True)
cur.execute("select * from sql_file")
result = cur.fetchall()
for result_iter in result:
print(result_iter)
remote.close()






cur = conn.cursor(buffered = True)
sql = "insert into crime_status values('2020', %s, %s, %s, %s)"
for idx, row in df_c.iterrows():
cur.execute(sql, tuple(row))
print(tuple(row))
conn.commit()


