一、MySQL导出数据
1、在MySQL中,可以使用SELECT…INTO OUTFILE语句将查询结果数据导出到文本文件
# 查看默认路径
show variables like '%secure_file_priv%';
secure_file_priv取值说明:
- null–表示不允许导入导出
- 空–表示没有任何限制
- 指定路径–表示导入导出只能在指定路径下完成
SELECT * FROM user_range INTO OUTFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\user_range.txt'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
2、mysql命令重定向查询结果
通常,我们使用mysql命令连接数据库,mysql命令有一个-e选项,可以执行指定的SQL语句,再结合DOS的重定向操作符”>”可以将查询结果导出到文件。
mysql -h localhost -u root -p -D mydb -e "select * from user_range" > E:\user_range.txt
3、使用mysqldump导出数据
# 导出dbname 数据库(含数据)
mysqldump -h localhost -u root -p dbname > d:/dbname.sql
# 导出dbname 数据库(不含数据)
mysqldump -h localhost -u root -p dbname --no-data > d:/dbname.sql
# 导出dbname.user_range 数据表
mysqldump -h localhost -u root -p dbname user_range > d:/user_range.sql
# 导出dbname数据库,忽略contacts表
mysqldump -h localhost -u root -p dbname --ignore-table dbname.contacts > d:/user_range.sql
二、MySQL备份数据
1、Windows
schtasks.exe用于安排命令和程序在指定时间内运行或定期运行,它可以从计划表中添加和删除任务、按需要启动和停止任务、显示和更改计划任务。
#备份数据库的脚本mysql_mydb_backup.bat
mysqldump -h localhost -uroot -p123456 mydb > d:\backup\mydb.sql
#创建计划任务(每隔指定时间备份一次MySQL)
schtasks /create /sc minute /mo 1 /tn 定期备份MySQL /tr d:\backup\mysql_mydb_backup.bat
#删除计划任务
schtasks /delete /tn 定期备份MySQL
2、Linux
#!/bin/bash
#备份目录
backup_dir=/home/liufeng/backup
#备份文件名
backup_filename=“mydb-`date +%Y%m%d`.sql“
#进入备份目录
cd $backup_dir
#备份数据库
mysqldump -h localhost -uroot -p123456 mydb > ${backup_dir}/${backup_filename} #删除7天以前的备份
find ${backup_dir} -mtime +7 -name "*.sql" -exec rm -rf {} \;
b、crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于周期性执行任务。
#每天凌晨01:30执行shell脚本(备份数据库)
30 1 * * * bash /home/liufeng/backup/mysql_mydb_backup.sh
三、MySQL导入数据
1、load data
在MySQL中,可以使用LOAD DATA语句将文本文件数据导入到对应的数据库表中,可以将LOAD DATA语句看成是SELECT…INTO OUTFILE的反操作。
#示例
LOAD DATA INFILE 'D:\\employee.txt' INTO TABLE employee character set utf8
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
2、source
在MySQL中,可以使用source命令导入较大的SQL文件。source命令可以导入使用mysqldump备 份的sql文件。
# source命令的使用示例
source d:/mydb.sql