出于项目需要,要将一个MySQL数据库从Linux系统下导出,再到Windows系统下导入。在不同Linux系统之中的导入导出我做了很多次了,参照网上的做法完全木有问题。但在Windows系统下用命令导入的时候却报了一个sql文件打开失败的错误,如图1所示。
图1 Windows下错误的MySQL导入
折腾了半天,又到MySQL官方论坛逛了一圈,在26个字母的海洋里呛得半死后,终于找到了问题的症结所在。
一、在Windows操作系统下使用MySQL命令
安装MySQL软件后,并不能直接在随意打开的命令提示符中使用MySQL命令。需先将可执行文件mysql.exe所在的路径【一般是“软件安装目\mysql\bin”】加入当前用户的环境变量PATH中或者系统环境变量Path中。
环境变量设置完成后,重启电脑使之生效。
二、使用命令导出MySQL数据库
2.1 导出完整的数据库(含数据)
mysqldump -uusrname -p dbname >out.sql
Enter password:****
2.2 导出数据库某指定的完整表(含数据)
mysqldump -uusrname -p dbname tabname >out.sql
Enter password:****
注:
usrname 是MySQL登录时所用的用户名
dbname 是要导出的数据库的库名
tabname 是要导出的数据表的表名
out.sql 是导出操作的目标文件,即导出结果
三、使用命令导入MySQL数据库
3.1 直接导入
mysql -uusrname -p dbname < in.sql
注:数据库dbname需预先建好
3.2 进入mysql提示符后用source命令导入
mysql -uusrname -p
Enter password:****
mysql> use dbname; //若本机当前没有此库的话,先用create database dbname; 创建
mysql> source in.sql;
注:usrname dbname与导出操作中的名词同义;in.sql是要导入的一个sql文件
四、注意事项
一般说来,我们仅仅使用要导入的文件名是不够的,还需指定其路径。【Win 7系统下,一般放在当前用户的主目录下(例如C:\Users\pifuhanqingsong)可以不指定路径。可能是因为通过”附件-->命令提示符"或者“运行cmd”打开的命令提示符,使用的当前目录默认为当前用户的主目录吧。】
我们知道与Linux描述路径时使用斜杠【“/”】分隔目录名不同,Windows使用反斜杆【"\"】分隔目录名。但在mysql提示符中,无论你所使用的OS是Linux还是Windows,都要使用斜杆【“/”】分隔目录名,如图2所示
图2 Windows下正确的MySQL导入
否则,就会出现本文开头图1中所示的打开文件失败错误。
当然,既然我们知道指定路径的必要性是基于一般打开的命令提示符使用当前用户的主目录作为当前目录,那么如果我们可以在待导入的sql文件所在的目录下执行命令,不是就不用指定路径了!经本人实验,这个想法确实是可行的。
--转自