在使用MySQL数据库时,经常需要备份和恢复数据库,通过导出sql文件备份和直接执行sql文件恢复是非常便捷的方式。本篇博客主要介绍如何对MySQL数据库通过cmd命令导出和导入sql文件。
1.导出sql文件
导出sql文件可以使用mysqldump。主要有如下几种操作:
①导出整个数据库(包括数据库中的数据):
mysqldump -hip -Pport -u username -ppassword dbname > dbname.sql;
mysqldump --single-transaction --host $ip -P $ip_port -u$dbUser $dbName --skip-lock-tables --tables $table > test.sql
mysql --default-character-set=utf8 -h$IP -P$PORT -u$USER -p$PASSWORD $DBNAME --skip-column-names -e "select * from db.table " | sed -e 's//\N/g' >> down.txt
②导出数据库中的数据表(包括数据表中的数据):
mysqldump -u username -ppassword dbname tablename > tablename.sql;
③导出数据库结构(不包括数据,只有创建数据表语句):
mysqldump -u username -ppassword -d dbname > dbname.sql;
④导出数据库中数据表的表结构(不包括数据,只有创建数据表语句):
mysqldump -u username -ppassword -d dbname tablename > tablename.sql
2.导入sql文件
①在命令窗口输入mysql -hip -Pport -uroot -proot(两个root依次表示登陆MySQL数据库的用户名和密码,根据自己的情况更改),接着输入show databases;(注意一定要输入分号;否则需要关闭命令窗口重新操作)
假设MySQL数据库中已经存在名为db_jxc的空数据库。同上1中的①②步打开命令窗口。
②接着输入use db_jxc(数据库中已经存在名为db_jxc的空数据库,先前已创建的),然后执行source /var/lib/mysql-files/aa.sql(sql文件路径根据自己的实际情况而定在mysql客户端所在机器的目录中)即可成功导入sql文件(进入MySQL数据可以看到数据库下已经创建了多张数据表)
show tables;可以查看当前数据库内所有表。
mysql -uroot -p123456aA -Djettomanagerdev -e "source /var/lib/mysql-files/jettomanagerdev.sql";
mysql --default-character-set=utf8 -h$IP -P$PORT -u$USER -p$PASSWORD $DBNAME -e "load data local infile 'down.txt' into table db.table FIELDS ESCAPED BY '/' LINES TERMINATED BY 'n' (col1, col2)"
如果你指定关键词low_priority, 那么MySQL将会等到没有其他人读这个表的时候
如果指定local关键词,则表明从客户主机读文件
分隔符的使用
fields关键字指定了文件记段的分割格式,如果用到这个关键字,MySQL剖析器希望
看到至少有下面的一个选项:
terminated by 分隔符:意思是以什么字符作为分隔符
enclosed by字段括起字符
escaped by转义字符
terminated by 描述字段的分隔符,默认 情况下是tab字符(t)
enclosed by描述的是字段的括起字符。
escaped by描述的转义字符。默认的是反斜杠 (backslash: )