MySQL导入时出现unknown command的解决方案

二、导出导入中文表:

首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上–default-character-set=utf8,

今天想把远程MySQL服务器上的一张表导入到本地数据库,于是先使用mysqldump导出这张表,这是很容易的,轻松搞定。但是导入的时候就不行了,总是提示Unknown
command
‘\\’。一开始还以为这是mysql的bug,自己导出的东西自己不能导入,后来想想MySQL不应该这么弱的,就上网搜了一下,结果发现是默认字符集的问题。远程的数据库服务器操作系统是Linux,OS的默认字符集也是UTF-8,但是我本机用的是Windows
7,默认的字符集是GBK,在导入的时候加上–default-characgter-set=utf8就好了。最后附上完整的导入导出语句
 
mysqldump -udbuser -p database table > exp.sql;
 
mysql -udbuser -p –default-character-set=utf8 database < exp.sql
 

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

+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | gbk |
| character_set_system | utf8 |

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

**一、同样设置字符编码的系统变量

#导出
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

**在freebsd平台下

复制代码 代码如下:

show variables like ‘char%’;

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

mysql>set character_set_database=utf8; ##设置默认的字符集为utf8

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

最后得出经验时只要把导入与导出编码统一一下就没问题了。

复制代码 代码如下:

查看character_set_database,这里是latin1,latin1是装不了多字节字符集的

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

至此、条件数据完整导入导出,并处理了乱码的情况。
总之,两台mysql服务器导入导出时,一定要确保两台服务器的character_set_database参数相同,这样才能防止一些
乱码的情况。当然我们还可以使用其他字符集,如gbk来进行调整。视情况操作了

复制代码 代码如下:

复制代码 代码如下:

您可能感兴趣的文章:

  • MySQL数据库结构和数据的导出和导入
  • Mysql导出导入说明
  • MYSQL导入导出命令详解
  • MySQL
    文本文件的导入导出数据的方法
  • MYSQL 数据库导入导出命令
  • Mysql导入导出工具Mysqldump和Source命令用法详解
  • mysql导入导出数据中文乱码解决方法小结
  • mysql
    导入导出数据库以及函数、存储过程的介绍
  • MySQL数据库导出与导入及常见错误解决
  • Mysql 导入导出csv
    中文乱码问题的解决方法
  • mysql
    导入导出数据库、数据表的方法
  • MySQL导入导出.sql文件及常用命令小结
  • MYSQL命令行导入导出数据库详解
  • mysql导入导出命令解析
  • MySQL数据库如何导入导出(备份还原)

mysql>load data local infile ‘/home/table.txt’ into table `table`;

复制代码 代码如下:

我使用windows作为导出数据源,并导入 freebsd环境下的mysql库

mysql -uroot -p –default-character-set=utf8 dbname < bak.sql

mysql> select * from table into outfile ‘c:table.txt’ where +条件

解决方法:

linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题。