1.mysqldump
1.1.使用mysqldump备份数据
1.1.1.备份指定数据库中的指定表
如:mysqldump [其他选项] 数据库名 [表1名 表2名 ...]
如:mysqldump -uroot -hlocalhost -p1234 database1 student_score > student_score.sql
上述采用-u和-p完成用户登录;-h表明登录到本机mysql服务端;database1 student_score交代了要备份的表所在的数据库名,表名;> student_score.sql指示将命令执行结果输出到student_score.sql这个文件。
有了student_score.sql这个文件,后续当表student_score被误删除,或想在别的数据库服务器上重建这个表并填充。执行这个sql中语句即可。
1.1.2.备份指定数据库中的所有表
如:mysqldump [其他选项] --database 数据库1名 数据库2名 ...
如:mysqldump -uroot -hlocalhost -p1234 --databases database1 database2 > new.sql
1.1.3.备份所有数据库的所有表
如:mysqldump [其他选项] --all-databases
如:mysqldump -uroot -hlocalhost -p1234 --all-databases > all.sql
1.2.使用SOURCE语句恢复数据
得到备份文件之后,可通过SOURCE语句来执行备份文件中的语句
如:SOURCE .\student_score.sql
2.以文本形式导出或导入
日常工作中,可能遇到这样需求:将表中的数据以文本的形式进行导出或将文本形式的数据导入到表中。此时,SELECT ... INTO OUTFILE
和LOAD DTA
语句可用来实现目标。
2.1.导出数据
如:SELECT ... INTO OUTFILE '文件路径' [导出选项]
常用的导出选项如下:
(1).FIELDS TERMINATED BY:
表示列分隔符,即各个列的值之间使用什么符号进行分隔,默认以'\t'分隔。如:FIELDS TERMINATED BY ','
设置以逗号作为分隔。
(2).FIELDS [OPTIONALLY] ENCLOSED BY:
表示列引用符,即每个列的值被什么符号包裹起来,默认是空字符串''。如加上OPTIONALLY则只会作用于字符串类型的列。
比如,FILEDS ENCLOSED BY '"'
表示每隔列的值将被双引号引起来。
(3).LINES STARTING BY:
表示行开始符,即每一行以什么符号开头,默认是空字符串''。如,LINES STARTING BY '%%'
表示每行以两个百分号开头。
(4).LINES TERMINATED BY:
表示行结束符,即每一行以什么符号结尾,默认是换行符'\n'。如,LINES TERMINATED BY '$$'
表示每行以两个美元符号结尾。
示例:导出student_score表中的数据:
SELECT * FROM student_score INTO OUTFILE 'C:/ProgramData/MySQL/student_score.txt';
可以设置导出选项导出:
SELECT * FROM student_score INTO OUTFILE 'C:/ProgramData/MySQL/student_score2.txt' FIELDS OPTIONALLY ENCLOSED BY '"' LINES STARTING BY '>_>';
导出数据会存储到运行服务器所在的主机上。
2.2.导入数据
如:LOAD DATA [LOCAL] INFILE '文件路径' INTO TABLE 表名 [导入选项]
填入LOCAL表明导入的数据文件在运行客户端的主机上,否则就在运行服务器的主机上。
如:LOAD DATA INFILE 'C:/ProgramData/MySQL/student_score.txt' INTO TABLE student_score;