/ 中存储网

MySQL数据库的导出和导入

2014-07-13 15:52:36 来源:中存储网
1.导出整个数据库

  mysqldump -u 用户名 -p 数据库名 > 导出的文件名

  mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql

2.导出一个表

  mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

  mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql

3.导出一个数据库结构

  mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:wcnc_db.sql

  -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库

  常用source 命令

  进入mysql数据库控制台,

  如mysql -u root -p

  mysql>use 数据库

  然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

  mysql>source d:wcnc_db.sql

 

5. mysql导入建表sql语句时中文注释的乱码问题的解决办法如下:

   在sql文件开头加上 SET NAMES 'utf8';

-------------------------------------------------------------------------------------------------

 MySQL数据库备份和还原的常用命令:

备份MySQL数据库的命令

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

直接将MySQL数据库压缩备份

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

备份MySQL数据库某个(些)表

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

同时备份多个MySQL数据库

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

仅仅备份数据库结构

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

备份服务器上所有数据库

mysqldump –all-databases > allbackupfile.sql

还原MySQL数据库的命令

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

还原压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

将数据库转移到新服务器

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

--------------------------------------------------------------------------------------------------

上面为导入导出*.sql文件的操作。

MySQL数据库还可以通过拷贝来备份数据库文件,下面介绍一下注意事项。

 

Mysql安装后在data文件夹中有4种文件.frm .MYD .MYI .opt

*.frm 是描述了表的结构;
*.MYD 保存了表的数据记录;
*.MYI 则是表的索引;
*.opt 记录数据库的选项,数据库的字符集设置 ( character_set_database和collation_database );

 

只要在mysql的安装文件中找到data文件夹,然后在里面建立一个文件夹,比如test。这个test其实就对应着数据库的名称,所以,你想要起什么样的数据库名称就把文件夹起什么名字。

然后把.frm文件导进去。注意还要在data目录下加入ib_logfile0,ib_logfile1,ibdata1这几个文件。
要不然在mysql里只能找到表名(其实一个.frm文件就是对应的数据库中的一个表。)
而不能对其进行操作。

 

如果查询的时候出现某某表不存在的问题,在确认.frm ,db.opt 文件完整的情况下,那么这种表使用的应该是innodb表引擎,应该将数据目录中的innodb数据文件(认ibdata1)

说明:
比如你原来的mysql中有一些数据库了。可以先把原来的data改名字备份在同一目录下。(可能要改名字系统会提示有另一程序在使用这个文件,这个时候可以到控制面板的服务里面,把mysql的服务先关掉,等改完名字,把东西都导进去后再开服务)
然后另建一个data,把在里面建好数据库名把.frm导进去。

 

--------------------------------------------------------------------------------------------------

停止服务可以通过管理工具里面的服务来停,或者用cmd 打开dos界面输入net stop mysql,启动用net start mysql;

只要用旧的ibdata1覆盖原来的,再把相关的数据库copy过去,然后重新启动数据库, 就ok了,进入以后要是对表不能操作可能是数据表已经损坏了。(如果不行报1146错 ,建议重启一下机器在看看)

ib_logfile0,ib_logfile1好象也可以不用覆盖,不然有时候mysql数据库启动不了了,报1067错误。