mysql导出导入中文表解决方法,linux服务器下mysql备份恢复命令介绍【数据库】

mysql中利用命令行快速导入sql文件

在开发过程中会经常用到mysql导出导入中文表,本文将详细介绍其如何使用,需要的朋友可以参考下
一、先针对utf8导出:
(1)导出源数据库的所有表:

设mysql安装在c:盘,mysql数据库的用户名是root,密码是123456,数据库名是database_name,在d:盘根目录下面存放备份数据库,备份数据库名字为backup20070713.sql(20070713.sql为备份日期)

 

复制代码 代码如下:

备份数据库:

Html代码

mysqldump -u root -p密码 –socket=mysql.sock
–default-character-set=utf8 –set-charset=utf8 –hex-blob –databases
数据库名 > utf8.sql

mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的
MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。

格式:  

(2)修改sql文件,删除文件头中包含的创建数据库的命令
(3)登录目标数据库
mysql -uroot -p密码 –default-character-set=utf8 –socket=mysql.sock
-A
注意:必须要指定字符集登录,而且,指定的字符集要和导出时指定的字符集相一致
(4)删除数据库(如果有的话)
drop database 数据库名;
(5)创建数据库并保存为utf8存储格式,并导入

 代码如下 复制代码
mysqldump -uroot -p123456 database_name>d:/backup20070713.sql

 

复制代码 代码如下:

上面windows/下面为linux

C:\Documents and Settings\eelly>mysql -u账号 -p密码

create database 数据库名 charset=utf8;
use 数据库名;
source utf8.sql;

我通常使用以下 SQL 来备份 MyISAM 表:

 

这块导入后,中文表可能有乱码。所以,要用下面的方法,导入中文表。

 代码如下 复制代码
/usr/local/mysql/bin/mysqldump -uyejr -pyejr
–default-character-set=utf8 –opt –extended-insert=false
–triggers -R –hex-blob -x db_name > db_name.sql
 

 –default-character-set=utf8
数据库<d:\t\mall_ecm_order_extm.sql  

二、导出导入中文表:

使用以下 SQL 来备份 Innodb 表:

  

复制代码 代码如下:

 代码如下 复制代码
/usr/local/mysql/bin/mysqldump -uyejr -pyejr
–default-character-set=utf8 –opt –extended-insert=false
–triggers -R –hex-blob –single-transaction db_name >
db_name.sql
 

示例:www.2cto.com  

#导出
mysqldump -u root -p密码 –socket=mysql.sock –default-character-set=gbk
–set-charset=gbk –hex-blob 数据库名 表名1 表名2 …… > gbk.sql
#导入(导入表时,如果表已经存在,会先删除再导入,所以,不用事先删除已经存在的表)
mysql -uroot -p密码 –default-character-set=gbk –socket=mysql.sock -A
<<EOF
use 数据库名;
source gbk.sql
EOF

另外,如果想要实现在线备份,还可以使用 –master-data 参数来实现,如下:

 

一、先针对utf8导出: (1)导出源数据库的…

 代码如下 复制代码
/usr/local/mysql/bin/mysqldump -uyejr -pyejr
–default-character-set=utf8 –opt –master-data=1
–single-transaction –flush-logs db_name > db_name.sql

C:\Documents and Settings\eelly>mysql -uroot -p 

 

 

恢复数据库:

–default-character-set=utf8 mall<d:\t\mall_ecm_order_extm.sql 

删除原有数据库,建立数据库,把备份数据库导入。

 

 代码如下 复制代码
mysqladmin -uroot -p123456 drop database_name

Html代码 格式:
C:\Documents and Settings\eellymysql -u账号 -p密码
–default-character-set=utf8 数据库d:\t\mall_ecm_order_e…

mysqladmin -uroot -p123456 create database_name

mysql -uroot -p123456 database_name
 

用 mysqldump 备份出来的文件是一个可以直接倒入的 SQL
脚本,有两种方法可以将数据导入。

直接用 mysql 客户端
例如:

 代码如下 复制代码
/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql
 

 

用 SOURCE 语法
其实这不是标准的 SQL 语法,而是 mysql 客户端提供的功能,例如:

 代码如下 复制代码
SOURCE /tmp/db_name.sql;

这里需要指定文件的绝对路径,并且必须是 mysqld 运行用户(例如
nobody)有权限读取的文件。

注:在导入备份数据库前,database_name如果没有,是需要创建的;而且与backup20070713.sql中数据库名是一样的才能导入。

mysqldump(数据导出工具)

  mysqldump options db_name[table_name]//备份单个数据库
  mysqldump 选项 –database database-name1
[databases-name2]….//备份指定的数据库一个或者多个
  mysqldump 选项 –all-database //备份所有的数据库
  链接选项:
  -u :指定用户名
   -p:指定密码
   -h:指定服务器ip或者域名
   -P(大写):指定端口
eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS
user>/home/wuxiaoxiao/user.txt
输出内容选项:
–add-drop-database:每个数据库创建语句之前加上drop database语句
–add-drop-table:每个表创建语句之前加上drop table语句
-n:不包含数据库的创建语句
-t:不包含数据表的创建语句
-d:不包含数据
输出格式选项:
 –compact:使输出结果简洁
 -c –compact-insert:使输出文件中的insert语句包含字段名
 -T:将数据库表中的数据备份为单纯的数据文本和建表sql俩个文件
   –fields-terminated-by=name(域分割符)
   –fields-enclosed-by=name(域引用符)
   –fields-optionally-enclosed-by=name(域可选引用符)
   –fields-escaped-by=name(转移字符)
eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS user -T
./bak
字符集选项:
–default-character-set=name:设置导出的客户端字符集
eg:mysql -u root -p –compact –default-character-set=utf8 BBS user >
test.txt

更多详细内容请查看: