/ 中存储网

解决Windows导入sql文件时"Failed to open file"的错

2014-07-13 15:58:18 来源:中存储网
        前段时间出于项目需要,要将一个MySQL数据库从Linux系统下导出,再到Windows系统下导入。在不同Linux系统之中的导入导出我做了很多次了,参照网上的做法完全木有问题。但在Windows系统下用命令导入的时候却报了一个sql文件打开失败的错误,如所示。

图示错误的导入

Windows下错误的MySQL导入

        折腾了半天,又到MySQL官方论坛逛了一圈,在26个字母的海洋里呛得半死后,终于找到了问题的症结所在。具体解决方法在本文<第四节 注意事项>,奔此而来的童鞋请直接前往,忽略掉前面的基础知识~

        本文的主题是基于命令行的MySQL导入导出,下面进入正题。

一、在Windows操作系统下使用MySQL命令

        安装MySQL软件后,并不能直接在随意打开的命令提示符中使用MySQL命令。需先将可执行文件mysql.exe所在的路径【一般是“软件安装目录mysqlbin”】加入当前用户的环境变量PATH中或者系统环境变量Path中,不会添加的自己问度娘谷哥去,此处不再赘述。

        环境变量设置完成后,重启电脑使之生效。【不想重启的,参考这个《详解Windows不重启使环境变量修改生效 (请直接点击文章名)》】

二、使用命令导出MySQL数据库 2.1 导出完整的数据库(含数据)

mysqldump -uusrname -pdbname >out.sql
Enter password:****

2.2 导出数据库某指定的完整表(含数据)

mysqldump -uusrname -pdbname tabname >out.sql
Enter password:****

注:

usrname 是MySQL登录时所用的用户名
dbname  是要导出的数据库的库名
tabname 是要导出的数据表的表名
out.sql   是导出操作的目标文件,即导出结果

三、使用命令导入MySQL数据库 3.1 直接导入

mysql -uusrname -pdbname < in.sql

注:数据库dbname需预先建好

3.2 进入mysql提示符后用source命令导入

mysql -uusrname -p 
Enter password:****
mysql> use dbname;                      //若本机当前没有此库的话,先用create databasedbname; 创建
mysql> sourcein.sql;

注:usrname dbname与导出操作中的名词同义;in.sql是要导入的一个sql文件

四、注意事项

        一般说来,我们仅仅使用要导入的文件名是不够的,还需指定其路径。【Win 7系统下,一般放在当前用户的主目录下(例如C:Userspifuhanqingsong)可以不指定路径。可能是因为通过”附件-->命令提示符"或者“运行cmd”打开的命令提示符,使用的当前目录默认为当前用户的主目录吧。】

        我们知道与Linux描述路径时使用斜杠【“/”】分隔目录名不同,Windows使用反斜杆【""】分隔目录名。但在mysql提示符中,无论你所使用的OS是Linux还是Windows,都要使用斜杆【“/”】分隔目录名,如所示

图示正确的导入

Windows下正确的MySQL导入

否则,就会出现本文开头中所示的打开文件失败错误。

        当然,既然我们知道指定路径的必要性是基于一般打开的命令提示符使用当前用户的主目录作为当前目录,那么如果我们可以在待导入的sql文件所在的目录下执行命令,不是就不用指定路径了!经本人实验,这个想法确实是可行的,具体做法参考《win7右键在当前目录打开命令cmd窗口》或者《如何更改cmd命令提示符的默认当前路径 》。