最近由于迁移服务器次数比较多,需要经常将MySQL数据库中的数据导出后再导入。用phpMyAdmin的话,由于PHP以及执行时间的限制,经常会出现不能导出的问题(因为数据库比较大)。而且就算导出了,也很可能因为上传限制等原因导致无法再次导入。因此,我决定在Linux下尝试使用命令行的形式进行导出。
导出使用mysqldump命令,导入则使用的是mysql命令。下面我们分别讲解一下导出和导入命令的详细用法。
(一)导出
命令:mysqldump -u 用户名 -p 数据库名 > 文件名
如果用户名需要密码,则需要在此命令执行后输入一次密码核对;如果数据库用户名不需要密码,则不要加“-p”参数,导入的时候相同。注意输入的用户名需要拥有对应数据库的操作权限,否则无法导出数据。由于是作系统维护和全部数据库的导出,一般我们使用root等超级用户权限。
比如要将abc这个数据库导出为一个文件名为db_abc.sql的数据库文件到当前目录下,则输入下面的命令:
#mysqldump -u root -p abc > db_abc.sql
接下来输入root用户的密码即可导出数据库。
(二)导入
命令:mysql -u 用户名 -p 数据库名 < 文件名
同mysqldump命令一样的用法,各参数的意义同mysqldump。
比如我们要将/root/backup/db_abc.sql这个文件的数据导入到abc数据库中,则使用下面的命令:
#mysql -u root -p abc < /root/backup/db_abc.sql
之后输入root用户的密码即可导入。值得一提的是,如果这个数据库本身不存在,则无法导入。也就是说要想导入到一个数据库,至少应该先建立一个空的数据库,然后再导入。
有了这两条指令,相信再大的数据库,都能得心应手的导出了。再也不会出现phpMyAdmin的超时错误,以及遇到导出的文件过大无法在phpMyAdmin中导入的问题。