在使用navicat导入导出数据功能时,导出没问题,导入总是报错,还遇到了中文乱码。在网上查了很多资料,比如使用了navicat的数据传输功能,但仍然报错,弄了几个小时都没解决。
最后换了种思路,我直接用mysql自带的命令行来尝试导入导出,结果一试就成功无任何报错、乱码!
这里顺便贴出网上的教程:
MySQL命令行导出数据库:
1,进入MySQL目录下的bin文件夹:cdMySQL中到bin文件夹的目录
如我输入的命令行:cdD:\Program Files\MySQL\MySQL Server 5.5\bin
(或者直接将windows的环境变量path中添加该目录)
2,导出数据库:mysqldump-u用户名-p数据库名>导出的文件名
如我输入的命令行:mysqldump-u lmapp -p lmapp -P 3308 > lmapp.sql(输入后会让你输入进入MySQL的密码)
(如果导出单张表的话在数据库名后面输入表名即可)
mysql导出数据库一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u lmapp -p lmapp users> test_users.sql (结尾没有分号)
3、会看到文件news.sql自动生成到bin文件下
导出时,遇到上面的问题。
解决措施:加个参数-P3308(mysql服务端口)即可解决问题。
命令行导入数据库:
1,将要导入的.sql文件移至bin文件下,这样的路径比较方便
2,同上面导出的第1步
3,进入MySQL:mysql-u用户名-p
如我输入的命令行:mysql-uroot-p(输入同样后会让你输入MySQL的密码)
4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库
5,输入:mysql>use目标数据库名
如我输入的命令行:mysql>usenews;
6,导入文件:mysql>source导入的文件名;
如我输入的命令行:mysql>sourcenews.sql;
注:由于导入数据库的规模、数据结构不同,导入所需时间会有较大差异。我导入的数据库有123M,花费将近5个小时。期间以为机器宕掉了,仔细观察命令行界面发现,导入是在正常进行的。导入成功后的界面如下:
注:导入单张数据表时,使用类似use lmapp lm_area 、source lm_area.sql的sql语句。原数据表可存在,导入后的数据表会覆盖同名已存在的数据表。
MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成的。