Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532834
  • 博文数量: 137
  • 博客积分: 3170
  • 博客等级: 中校
  • 技术积分: 1455
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-17 11:47
文章分类

全部博文(137)

文章存档

2015年(2)

2013年(1)

2012年(6)

2011年(5)

2010年(62)

2009年(61)

我的朋友

分类: Mysql/postgreSQL

2010-04-12 11:16:31

1.我们可以在4个level指定字符集,server, database, table, and column。
2.mysql在字符集方面的功能
2.1  以各种字符集存储字符串。
2.2  用不同的collation比较字符。
2.3  
在4个level指定字符集,server, database, table, and column
2.4 
查看server的当前字符集,
character_set_server and collation_server system variables. 并且在服务器运行时可以改变这些变量。
2.5  database
2.5.1  创建database

CREATE DATABASE db_name
    [[DEFAULT] CHARACTER SET charset_name]
    [[DEFAULT] COLLATE collation_name]

ALTER DATABASE db_name
    [[DEFAULT] CHARACTER SET charset_name]
    [[DEFAULT] COLLATE collation_name]


2.5.2 创建database时,如果没有特别指定,使用server的character set and server collation
character_set_database and collation_database
character_set_server and collation_server
database的
character set和collation作用于 LOAD DATA INFILE
2.6 table

CREATE TABLE tbl_name (column_list)
    [[DEFAULT] CHARACTER SET charset_name]
    [COLLATE collation_name]]

ALTER TABLE tbl_name
    [[DEFAULT] CHARACTER SET charset_name]
    [COLLATE collation_name]

表一级的字符集设定是mysql的特性 ,标准sql里是没有的。
2.7 column
每一个字符的column( e CHAR, VARCHAR, or TEXT) has a column character set and a column collation.
2.8  如何查看相应级别的字符集,可以查看mysql的常用命令。
2.9  每个字符串字面都有字符集和collation两个属性。
Every character string literal has a character set and a collation。

2.10  连接的字符集和collation.

3.创建表的一些经验:
3.1首先创建表之前应当确认一下当前的字符集环境。
show variables like 'char%'
3.2 测试结果
测试用mysql版本mysql5.0.37
1 在 mysql> 提示符下执行create table命令
1.1   create table *****kill摒弃这种不确定性操作
1.2  set names gbk; create table     !ok
1.3  set names utf8 ; create table  !ok
2   利用文件导入到数据库
2.1   文件gbk   文件内容  set names gbk; create table  利用set names utf8查看正常
2.2   文件gbk   文件内容  set names utf8; create table  不管怎么看都是乱码了,呵呵.
2.3   文件utf8   文件内容  set names utf8; create table  利用set names utf8查看正常
2.4    文件utf8   文件内容  set names gbk; create table  利用set names gbk查看正常.
2.5    文件utf8   文件内容   create table  *****kill摒弃这种不确定性操作
2.6    文件gbk   文件内容   create table  *****kill摒弃这种不确定性操作
3  通过load data 导入xls文件到数据库中,再利用mysqldump导出相应表的sql文件file.sql
3.1  file.sql为gbk  test数据库
set names gbk查看: data为乱码  comment 乱
set names utf8查看: data为正常 comment 乱
3.2  file.sql为utf8   test2
set names utf8查看: data正常   coment乱
3.3  file.sql为gbk   
3.3.1 create table:set names utf8; insert table : set names gbk   test3
如果这个表导入数据库后,dump导出是乱码那么终究还是有些问题的,可以考虑重新load和dump,能够解决问题。
测试用mysql版本mysql5.0.37
1 在 mysql> 提示符下执行create table命令
1.1   create table *****kill摒弃这种不确定性操作
1.2  set names gbk; create table     !ok
1.3  set names utf8 ; create table  !ok
2   利用文件导入到数据库
2.1   文件gbk   文件内容  set names gbk; create table  利用set names utf8查看正常
2.2   文件gbk   文件内容  set names utf8; create table  不管怎么看都是乱码了,呵呵.
2.3   文件utf8   文件内容  set names utf8; create table  利用set names utf8查看正常
2.4    文件utf8   文件内容  set names gbk; create table  利用set names gbk查看正常.
2.5    文件utf8   文件内容   create table  *****kill摒弃这种不确定性操作
2.6    文件gbk   文件内容   create table  *****kill摒弃这种不确定性操作
3  通过load data 导入xls文件到数据库中,再利用mysqldump导出相应表的sql文件file.sql
3.1  file.sql为gbk  test数据库
set names gbk查看: data为乱码  comment 乱
set names utf8查看: data为正常 comment 乱
3.2  file.sql为utf8   test2
set names utf8查看: data正常   coment乱
3.3  file.sql为gbk   
3.3.1 create table:set names utf8; insert table : set names gbk   test3
如果这个表导入数据库后,dump导出是乱码那么终究还是有些问题的,可以考虑重新load和dump,能够解决问题。
--测试用mysql版本mysql5.0.37
--1 在 mysql> 提示符下执行create table命令
--1.1   create table *****kill摒弃这种不确定性操作
--1.2  set names gbk; create table     !ok当然最好是utf8的
--1.3  set names utf8 ; create table  !ok
--2   利用文件导入到数据库
--2.1   文件gbk   文件内容  set names gbk; create table  利用set names utf8查看正常
--2.2   文件gbk   文件内容  set names utf8; create table  不管怎么看都是乱码了,呵呵.
--2.3   文件utf8   文件内容  set names utf8; create table  利用set names utf8查看正常
--2.4    文件utf8   文件内容  set names gbk; create table  利用set names gbk查看正常.
--2.5    文件utf8   文件内容   create table  *****kill摒弃这种不确定性操作
--2.6    文件gbk   文件内容   create table  *****kill摒弃这种不确定性操作
--3  通过load data 导入xls文件到数据库中,再利用mysqldump导出相应表的sql文件file.sql
--3.1  file.sql为gbk  test数据库
--set names gbk查看: data为乱码  comment 乱
--set names utf8查看: data为正常 comment 乱
--3.2  file.sql为utf8   test2
--set names utf8查看: data正常   coment乱
--3.3  file.sql为gbk   
--3.3.1 create table:set names utf8; insert table : set names gbk   test3
--总结:表的数据格式最好是utf8的,例如:我们如果我们用mysqldump出来的数据是gbk格式的,我们可以用iconv或enca转换为utf8文件,删除文件中的多余-- 和/**/这些,再在文件中加入set names utf8即可,这样我们的表的字符集create table和insert 的字符集是一致的,不会出现二者有一个为乱码的尴尬局面。



阅读(4244) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~