`

MYSQL避免中文乱码的小例子_包含数据库建立 表建立 数据导入 数据导出

 
阅读更多

前言:

本人一直以来被MYSQL 数据库乱码问题所困扰--- 生气ING

今天特意做一个prototype,从零开始创建一个DB

并练习使用mysqldump导出sql文件作为备份,导入sql文件恢复数据库

 

概述:

 

为了避免MYSQL 中文乱码的情况发生,我们需要注意以下几点:

1 建立数据库时候指定编码方式为utf8

mysql> create database test character set utf8 ;

2 建立表结构的时候需要指定编码方式 为utf8

CREATE TABLE `homes` (
  xxxxxxx
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ;

3 备份数据库时需要指定编码方式 latin1

#mysqldump -u root -proot -F  --default-character-set=latin1 test> /var/lib/mysql/doc/homes_2012_11_08.sql

4 恢复数据库时候(单纯恢复表结构表数据,数据库并未删除) 不需要指定数据库编码方式

# mysql -uroot -proot test < /var/lib/mysql/doc/homes_2012_11_08.sql

 

步骤

第一步 创建数据库

1 登录MYSQL -- >太简单了 命令行省略掉

2 创建一个新的DB --> 注意哦 数据库的字符编码方式我设置成为 utf8

   mysql> create database test character set utf8 ;

3 下面来验证一下 ---> 查询结果DB的字符编码方式确实是utf8

mysql> use information_schema

mysql> select * from SCHEMATA where SCHEMA_NAME='test ';
+--------------+-------------+----------------------------+------------------------+----------+
| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
+--------------+-------------+----------------------------+------------------------+----------+
| NULL         | test        | utf8                       | utf8_general_ci         | NULL     |
+--------------+-------------+----------------------------+------------------------+----------+
1 row in set (0.00 sec)

4 创建一张表

 
[root@localhost share]# mkdir /var/lib/mysql/ doc   

                                     --->在mysql存放数据的文档下面创建doc文件夹 专门存放.sql 文件
[root@localhost share]# touch /var/lib/mysql/doc/homes.sql
[root@localhost share]# vi /var/lib/mysql/doc/homes.sql --->编辑.sql文件 包含生成创建SQL语句的信息

 DROP TABLE IF EXISTS `homes`;
CREATE TABLE `homes` (
  `id` bigint(33) NOT NULL AUTO_INCREMENT,
  `name` varchar(60)  NOT NULL,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
insert into homes
values('','永外民主东街');
insert into homes
values('','紫竹桥南');
insert into homes
values('','三元桥');
insert into homes
values('','将府家园');
 

 

 

[root@localhost mysql]# mysql -uroot -proot -e "source /var/lib/mysql/doc/homes.sql" test

                                             ------>不进入MYSQL数据执行.sql建表语句命令

 

第二步 导出数据库内容到指定文件  ------>备份数据库操作

#mysqldump -u root -proot -F  --default-character-set=latin1 test> /var/lib/mysql/doc/homes_2012_11_08.sql

--->指定字符编码为 latin1

      指定备份的数据库为test

      -F表示新生成一个日志文件

查看这个导出的sql文件 内容如下

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `homes`
--

DROP TABLE IF EXISTS `homes`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `homes` (
  `id` bigint(33) NOT NULL AUTO_INCREMENT,
  `name` varchar(60) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `homes`
--

LOCK TABLES `homes` WRITE;
/*!40000 ALTER TABLE `homes` DISABLE KEYS */;
INSERT INTO `homes` VALUES (1,'永外民主东街'),(2,'紫竹桥南'),(3,'三元桥'),(4,'将府家园');
/*!40000 ALTER TABLE `homes` ENABLE KEYS */;
UNLOCK TABLES;

 查看新生成的二进制日志文件

#mysqlbinlog /var/lib/mysql/doc/bing.000015

/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
mysqlbinlog: File 'bing.000015' not found (Errcode: 2)
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
 

第三步 导入SQL 文件到数据库 -->还原操作

1 模仿数据库崩溃操作  删除数据库新创建的表 -- homes

2 执行以下命令恢复数据库

[root@localhost doc]# mysql -uroot -proot test < /var/lib/mysql/doc/homes_2012_11_08.sql

或者

     进入MYSQL后执行以下命令

      mysql>use test;

      mysql>set character set latin1;   --->设置编码方式 保证数据库不是乱码 可省略

      mysql>source   /var/lib/mysql/doc/homes_2012_11_08.sql;

3 查询 -- 成功

 

mysql> select * from homes;
+----+--------------------+
| id | name               |
+----+--------------------+
|  1 | 永外民主东街 |
|  2 | 紫竹桥南       |
|  3 | 三元桥          |
|  4 | 将府家园       |
+----+--------------------+

 

 

知识补充

 

MYSQL 允许定义任何级别的字符集和校对规则,在同一台服务器、同一个数据库或甚至在同一个表中使用不同字符集或校对规则来混合字符串。

==========================MYSQL 字符集的参考资料============================
http://www.oklinux.cn/html/sql/mysql/20090227/67808_2.html
======================================================================

分享到:
评论

相关推荐

    用JAVA导出MYSQL的数据

    在Java编程中,我们经常需要与数据库进行交互,包括数据的导入和导出。本话题主要探讨如何使用Java程序导出MySQL数据库中的数据。以下将详细讲解相关概念和技术。 首先,导出MySQL数据最常用的方式是通过命令行工具...

    MySQL数据导入导出方法与工具mysqlimport.pdf

    MySQL作为全球应用最为广泛的开源关系型数据库管理系统之一,其数据导入导出操作是数据库管理员和开发人员日常工作中非常重要的部分。本篇文件详细介绍了MySQL数据导入导出的方法与工具,其中主要内容涉及了...

    各种数据库导出XML导入oracle方式.doc

    本文将详细探讨如何将XML数据导入到Oracle数据库,同时也会涉及其他数据库(如SQL Server、MySQL、Sybase)的数据导出至XML,并进行相应的解析。 首先,我们来看SQL Server的数据导出到XML。在SQL Server中,可以...

    sqlserver2000数据库迁移mysql5.pdf

    总的来说,从SQL Server 2000到MySQL 5的迁移涉及多个步骤,包括环境配置、数据源建立、数据迁移以及后期验证。这个过程中需要对两个数据库系统的特性和差异有深入理解,以确保迁移的顺利进行。迁移数据库时,始终要...

    Mqsql中文乱码问题的解决方法

    10. **数据导入和导出**:如果你在进行数据导入或导出操作,也需要检查文件的编码,确保与MySQL的字符集匹配,否则仍可能导致乱码。 通过以上步骤,即使在my.ini文件无法直接修改的情况下,也能有效地解决MySQL的...

    mysql导入sql或excel文件

    在开始介绍如何将SQL脚本或Excel数据导入MySQL数据库之前,我们先来了解一下MySQL的一些基本操作命令。 ##### 创建数据库 创建一个名为`temp`的新数据库: ```sql CREATE DATABASE temp; ``` ##### 导入SQL备份...

    sqlserver数据库迁移mysql5.pdf

    在MySQL端,创建一个与源数据库同名的新数据库,并设定合适的字符集,这里是GBK,以确保在导入数据时能正确处理中文字符。创建数据库的命令可能如下: ```sql CREATE DATABASE smsblog CHARACTER SET gbk COLLATE ...

    mssql转mysql的odbc程序

    在我们的例子中,它使得能够编写一个独立于具体数据库系统的程序,用于从SQL Server导出数据,并将其导入到MySQL中。 3. 数据库迁移步骤: - **创建ODBC数据源**:在Windows操作系统中,通过“控制面板”的“管理...

    odbc例子程序,支持unicode,xml方式调用

    此示例程序解决了这个问题,确保在数据的读取和写入过程中正确处理Unicode字符,从而避免乱码或数据丢失。 XML接口的引入,为数据交换提供了另一种灵活的方式。XML是一种自描述的、结构化的数据格式,易于解析和...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    csv文件导入存储csv文件导入存储

    4. **字符编码**:确保文件和数据库的字符编码一致,避免乱码问题。 5. **安全考虑**:使用参数化查询(如PDO的`prepare()`和`execute()`)可防止SQL注入攻击。 以上就是使用PHP将CSV文件导入并存储到数据库的基本...

    数据库管理中文件的使用教程

    通过上述内容,我们可以了解到在数据库管理过程中文件使用的一些基础和进阶知识点,这包括了数据的导入导出、SQL命令的执行和重定向、以及数据库备份与恢复的基本概念。掌握这些知识对于一名数据库管理员来说是非常...

    iReport制作报表可能会用到的包

    这些库可以帮助iReport实现更多功能,如导入导出Excel格式的报表,或者使用自定义的模板语言。 6. 示例报表和模板:有时,压缩包会包含示例报表和模板,帮助初学者了解如何使用iReport和JasperReports设计报表。...

Global site tag (gtag.js) - Google Analytics