字符集为ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库

字符集为ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库
字符集为ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库

相信大家都对字符集有相当的了解了,废话就不多说了!直接步入正题:这里主要是测试含有汉字的数据从ZHS16GBK的数据库导入到字符集为AL32UTF8

数据库. 如有我没想到的其他情况,请大家提建议,我继续完善测试实验。

测试环境:

目标库:英杰的rac测试库由

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Testing options

sys@rac1>select userenv('language') from dual;

USERENV('LANGUAGE')

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

AMERICAN_AMERICA.AL32UTF8

yang@rac1>select * from nls_database_parameters;

PARAMETER V ALUE

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

NLS_LANGUAGE AMERICAN

NLS_TERRITORY AMERICA

NLS_CURRENCY $

NLS_ISO_CURRENCY AMERICA

NLS_NUMERIC_CHARACTERS .,

NLS_CHARACTERSET AL32UTF8

NLS_CALENDAR GREGORIAN

NLS_DA TE_FORMAT DD-MON-RR

NLS_DA TE_LANGUAGE AMERICAN

NLS_SORT BINARY

NLS_TIME_FORMAT HH.MI.SSXFF AM

NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR

NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR

NLS_DUAL_CURRENCY $

NLS_COMP BINARY

NLS_LENGTH_SEMANTICS BYTE

NLS_NCHAR_CONV_EXCP FALSE

NLS_NCHAR_CHARACTERSET AL16UTF16

NLS_RDBMS_VERSION 11.2.0.1.0

20 rows selected.

源库:

Release 11.1.0.6.0 - Production on Friday, 11 March, 2011 21:11:49

Conneted to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

源库的nls_ 信息:

sys@ORACL> select * from nls_database_parameters;

PARAMETER V ALUE

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

NLS_LANGUAGE AMERICAN

NLS_TERRITORY AMERICA

NLS_CURRENCY $

NLS_ISO_CURRENCY AMERICA

NLS_NUMERIC_CHARACTERS .,

NLS_CHARACTERSET ZHS16GBK

NLS_CALENDAR GREGORIAN

NLS_DA TE_FORMAT DD-MON-RR

NLS_DA TE_LANGUAGE AMERICAN

NLS_SORT BINARY

NLS_TIME_FORMAT HH.MI.SSXFF AM

NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR

NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR

NLS_DUAL_CURRENCY $

NLS_COMP BINARY

NLS_LENGTH_SEMANTICS BYTE

NLS_NCHAR_CONV_EXCP FALSE

NLS_NCHAR_CHARACTERSET AL16UTF16

NLS_RDBMS_VERSION 11.1.0.6.0

测试步骤:这里主要是测试含有汉字的数据从ZHS16GBK 导入到AL32UTF8 . 在源库创建含有汉字的表:

yang@ORACL> create table chart ( val varchar2(20));

表已创建。

======创建英文字符数据

yang@ORACL> insert into chart

2 select dbms_random.string('l',15)

3 from dual

4 connect by level <50;

已创建49行。

======创建中文汉字数据

yang@ORACL> insert into chart

2 select '阿里云' as val from

3 dual connect by level <50;

已创建49行。

yang@ORACL> select * from chart;

V AL

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

ogqodcrhyqaesks zifjvopjwwvydjf oaosnvrzjazdmju ihpjfwpgzxlbosn igimjnzkjbaiivf jxqmgavtpfmlphf izgrniqmuejiysb cydqjrbjldnsucq sikpsorziznhyly bxstvwdqrqmnylp ziveucwqsjbmlpu qdhdwjoxthivxoe dqideijubqlzeel qtuyuiwnjigrqcj gzgamguukwgogib ufrnfcdtcnmxatg rpuhrxfzzwmajec kqsawluuwltmdbf mlkfeymlhbqsrwj fokunjivnccjhls drlkbryvpklhlst vaigghwmwspounp qpdslsjqszpasgg cevwjirdyowhzep gpktcxauilvpjym oyrrpyxlroflksp hqfctsysbpnzkfi ufcqglfwqgvuwdv nhloooihrndmrcu grrtelwqpgnmazw olzmdcotmziiphj fmohaagtultvxon lwsqzgofvhgzajm vcdeoomgsrzfvjr pzpfqhpenensoij nbvxphjkufcvxmj ydfknwhpnzzpvsw xzhooomfumuckdc rohspaowywmblti dhjctrkkrdlyhvr yzevspqkpuumjzh xqmdpotvouvzgzl rnvcrercdxybwlt zhbdhamarftudbr

biykwlracluonab hsdpycatadxhpft wskchunnmvkbprh butuurwduseffzc fosmnbjannddffp 阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

阿里云

已选择98行。

yang@ORACL> commit;

提交完成。

yang@ORACL> select dump('阿里云') from dual;

DUMP('阿里云')

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

Typ=96 Len=6: 176,162,192,239,212,198 ===三个汉字占用6个字节

===================导出操作===================================

Microsoft Windows [版本6.1.7600]

版权所有(c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\aaaa>set nls_lang=american_america.al32utf8 这里后面测试不加也可以成功导入al32utf8

C:\Users\aaaa>expdp yang/yang tables=chart directory=dumpdir dumpfile=zhs16gbk.dmp Export: Release 11.1.0.6.0 - Production on Friday, 11 March, 2011 21:19:04

Copyright (c) 2003, 2007, Oracle. All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "YANG"."SYS_EXPORT_TABLE_01": yang/******** tables=chart directory=dumpdir dumpfile=zhs16g

bk.dmp

Estimate in progress using BLOCKS method...

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 64 KB

Processing object type TABLE_EXPORT/TABLE/TABLE

. . exported "YANG"."CHART" 6.484 KB 98 rows Master table "YANG"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded

****************************************************************************** Dump file set for YANG.SYS_EXPORT_TABLE_01 is:

D:\DUMP\ZHS16GBK.DMP

Job "YANG"."SYS_EXPORT_TABLE_01" successfully completed at 21:19:20

==============================导入到目标库=========================================

oracle@rac1:rac1 /tmp/dump>export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

==.bash_profile 文件里已经声明了,这里是强调一下。

oracle@rac1:rac1 /tmp/dump>impdp yang/yang tables=chart directory=dumpdir dumpfile=zhs16gbk.dmp log=zhs16gbk_to_al32utf8.log

Import: Release 11.2.0.1.0 - Production on Fri Mar 11 21:23:13 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Testing options

Legacy Mode Active due to the following parameters:

Legacy Mode Parameter: "log=zhs16gbk_to_al32utf8.log" Location: Command Line, Replaced with: "logfile=zhs16gbk_to_al32utf8.log"

Master table "YANG"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded

Starting "YANG"."SYS_IMPORT_TABLE_01": yang/******** tables=chart directory=dumpdir dumpfile=zhs16gbk.dmp

logfile=zhs16gbk_to_al32utf8.log

Processing object type TABLE_EXPORT/TABLE/TABLE

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

. . imported "YANG"."CHART" 6.484 KB 98 rows Job "YANG"."SYS_IMPORT_TABLE_01" successfully completed at 21:23:17

==============================在目标库中验证=======================================

sys@rac1>select dump('阿里云') from dual;

DUMP('阿里云')

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

Typ=96 Len=9: 233,152,191,233,135,140,228,186,145 阿里云三个汉字占用9个字节。

yang@rac1>select table_name from user_tables;

TABLE_NAME

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

CHARSET

CHART

yang@rac1>select val from chart;

V AL

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

ogqodcrhyqaesks

zifjvopjwwvydjf

oaosnvrzjazdmju

ihpjfwpgzxlbosn

igimjnzkjbaiivf

jxqmgavtpfmlphf

izgrniqmuejiysb

cydqjrbjldnsucq sikpsorziznhyly bxstvwdqrqmnylp ziveucwqsjbmlpu qdhdwjoxthivxoe dqideijubqlzeel qtuyuiwnjigrqcj gzgamguukwgogib ufrnfcdtcnmxatg rpuhrxfzzwmajec kqsawluuwltmdbf mlkfeymlhbqsrwj fokunjivnccjhls drlkbryvpklhlst vaigghwmwspounp qpdslsjqszpasgg cevwjirdyowhzep gpktcxauilvpjym oyrrpyxlroflksp hqfctsysbpnzkfi ufcqglfwqgvuwdv nhloooihrndmrcu grrtelwqpgnmazw olzmdcotmziiphj fmohaagtultvxon lwsqzgofvhgzajm vcdeoomgsrzfvjr pzpfqhpenensoij nbvxphjkufcvxmj ydfknwhpnzzpvsw xzhooomfumuckdc rohspaowywmblti dhjctrkkrdlyhvr yzevspqkpuumjzh xqmdpotvouvzgzl rnvcrercdxybwlt zhbdhamarftudbr biykwlracluonab hsdpycatadxhpft wskchunnmvkbprh butuurwduseffzc fosmnbjannddffp 阿里云

阿里云

阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云阿里云

阿里云

阿里云

98 rows selected.

小结:字符集子集向其超集转换是可行的,如此例ZHS16GBK转换为AL32UTF8。

导出使用的字符集将会记录在导出文件中,当文件导入时,将会检查导出时使用的字符集设置,如果这个字符集不同于导入客户端的NLS_LANG

设置,字符集将根据导入客户端NLS_LANG设置进行转换,如果必要,在数据插入数据库之前会进行进一步转换。

通常在导出时最好把客户端字符集设置得和数据库端相同,这样可以避免在导出时发生不必要的数据转换,导出文件将和数据库具有相同的字符集。

即使将来会把导出文件导入到不同字符集的数据库中,这样做也可以把转换延缓至导入时刻。

当进行数据导入时,主要存在以下两种情况:

1.源数据库和目标数据库具有相同字符集设置

这时,只需要设置NLS_LANG等于数据库字符集即可导入(前提是,导出使用的是和源数据库相同字符集,即三者相同)

2.源数据库和目标数据库字符集不同

如果我们导出时候使用的NLS_LANG是和源数据库相同的字符集,那么导入时就可以设置客户端NLS_LANG等于导出时使用的字符集,这

样转换只发生在数据库端,而且只发生一次。

例如:

如果进行从ZHS16GBK到UTF8的转换

1)使用NLS_LANG=AMERICAN_AMERICA.ZHS16GBK导出数据库。

这时创建的导出文件包含ZHS16GBK的数据

2)导入时使用NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

这时转换仅发生在insert数据到UTF8的数据库中。

以上假设的转换只在目标数据库字符集是源数据库字符集的超集时才能转换。

参考文章:

https://www.360docs.net/doc/d116379015.html,/thread-538197-1-1.html

https://www.360docs.net/doc/d116379015.html,/viewthread.php?tid=276524&extra=page%3D1&page=1

https://www.360docs.net/doc/d116379015.html,/archives/2004/09/nls_character_set_04.html

数据库数据导入导出方法

数据库数据导入导出方法 1逻辑导入 备份方法: 在主机服务器的DOS提示符下输入: EXP USERID=ZLHIS/HIS BUFFER=4096 FILE=D:\20040101.dmp LOG=D:\20040101.log OWNER=(ZLHIS) ROWS=Y INDEXES =Y CONSTRAINTS =Y GRANTS=Y DIRECT=N 表示只导出zlhis用户的数据对象 Buffer:该值越大,导出的时间略短。 File:表示导出的dmp的文件路径 Log:表示导出的日志文件路径 其余参数可以通过exp help=y查询。 2逻辑导出 在主机服务器的DOS提示符下输入: IMP USERID=ZLHIS/HIS FROMUSER=(ZLHIS) TOUSER=(ZLHIS) BUFFER=30720 FILE=D:\20040101.dmp LOG=D:\20040101.log ROWS=Y INDEXES=Y CONSTRAINTS =Y GRANTS =Y SHOW=N COMMIT =Y IGNORE=Y 表示只导入zlhis用户的数据对象 Buffer:该值越大,导入的时间略短。 File:表示导入的dmp的文件路径 Log:表示导入的日志文件路径 Ignore:Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore 参数的设置来决定如何操作。若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。若ignore=n,Oracle不执行CREATE TABLE语句,

ORACLE字符集

Oracle 的字符集 1、字符集基本概念 Character set 字符集是某系统支持的所有抽象字符(各种文字和符号的总称)的集合,包括各国家文字、标点、图形、数字等。Oracle字符集命名规则: <语言><比特位数><编码> ZHS16GBK表示采用GBK编码格式、16bit、简体中文字符集. Character Encoding 字符编码指怎么将字符变成字节用于保存、读取和传输。 单字节编码 单字节7位字符集,可定义128个字符,最常用的为US7ASCII,oracle最早支持的编码方案 单字节8位字符集,可定义256个字符,适合欧洲大部分国家 WE8ISO8859P1(西欧、8位) 多字节编码 变长多字节编码,某些字符用一个字节,某些字符用两个或多个字符表示,变长多字节编码常用于对亚洲语言的支持例如日语、汉语、印语等。AL32UTF8(AL 代表ALL,指适用于所有地区)、zhs16cgb231280 定长多字节编码,每一个字符都使用固定长度字节的编码方案,目前oracle 唯一支持的定长多字节编码是AF16UTF16,也是仅用于国家字符集。

Unicode 字符集 几乎包含人类所有可用的字符,每年还在不断的增加,可以看作是一种通用的字符集。它将全世界所有的字符统一化,统一编码,不会再出现字符不兼容和字符转换的问题。 UTF-16是unicode的16位编码方式,是一种定长多字节编码,用2个字节表示一个unicode字符。 UTF-8 是unicode 的8 位编码方式,是一种变长多字节编码,这种编码可以用1、2、3个字节表示一个unicode字符,AL32UTF8,UTF8、UTFE是UTF-8编码字符集 字符集超级 当一种字符集A的编码数值包含所有另一种字符集B的编码数值,并且两种字符集相同编码数值代表相同的字符时,则字符集A是字符集B的超级或称字符集B是字符集A的子集。Oracle8i和oracle9i官方文档资料中有子集-超级对照表(subset-superset pairs)例如:WE8ISO8859P1是WE8MSWIN1252的子集。由于US7ASCII是最早的Oracle数据库编码格式因此有许多字符集是US7ASCII的超集,例如WE8ISO8859P1、ZHS16CGB231280、ZHS16GBK都是US7ASCII的超集。 2、Oracle字符集基本原理 Oracle 通过NLS_LANG=language_territory.charset 设定对语言和字符集的支持,如AMERICAN_AMERICA.AL32UTF8,其实真正影响数据库字符集是第三部分。两个数据库的NLS_LANG只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。在一个创建好的数据库中这个参数是分部分存

mysql字符集设定

2.MySQL5.1以及之前的版本:[mysqld]设置default-character-set 3.MySQL的字默认引擎设置 在修改默认引擎之前,最好了解mysql读取配置文件https://www.360docs.net/doc/d116379015.html,f的顺序,以及mysql的目录结构--默认basedir=/usr ,datadir=/var/lib/mysql,/etc/https://www.360docs.net/doc/d116379015.html,f 配置文件读取顺序详见另一篇帖子。 1.查看mysql的存储引擎信息 mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------

------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | +--------------------+---------+----------------------------------------------------------------+--------------+------+-------- MySQL-5.5.19-1.linux2.6.i386的默认引擎为InnoDB。 2.设置mysql的默认存储引擎 编辑https://www.360docs.net/doc/d116379015.html,f配置文件,在服务器端配置信息[mysqld]下面添加: default-storage-engine = MyISAM 即可设置mysql数据库的默认引擎为MyISAM 3.设置当前会话的默认存储引擎 SET storage_engine=InnoDB; 即可以设置当前会话连接的默认存储引擎为InnoDB。 4.指定表的存储引擎 如: create table t_innodb( id int(3) ) engine = innodb; 然后使用 mysql> show table status like 't_i%'\G; 查看表的详细信息。

MySQL5.6.14下载、安装及配置安装图文教程

说明 5.6.14是一个稳定的发布版本,比较稳定的,安装包比5.5大很多,因为集成了32位和64位的,网上有人做过测试,性能比5,5强很多,于是果断选5.6,下面开始安装. 下载及安装MySQL 自MySQL版本升级到5.6以后,其安装及配置过程和原来版本发生了很大的变化,下面详细介绍5.6版本MySQL的下载、安装及配置过程。 s 图1.1 MySQL5.6 目前针对不同用户,MySQL提供了2个不同的版本: MySQL Community Server:社区版,该版本完全免费,但是官方不提供技术支持。 MySQL Enterprise Server:企业版,它能够高性价比的为企业提供数据仓库应用,支持ACID事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能。但是该版本需付费使用,官方提供电话及文档等技术支持。 目前最新的MySQL版本为MySQL 5.6,可以在官方网站(https://www.360docs.net/doc/d116379015.html,/downloads/)上面下载该软件。在下图1.2所示的MySQL官网上单击右下角的“MySQL Installer 5.6”超链接,然后按照提示一步步操作就可以将MySQL软件下载到本地计算机中了。注意这里我们选择的是数据库版本是“Windows (x86, 32-bit), MSI Installer”,如下图1.3所示。 图1.2 MySQL官方网站 图1.3 选择MySQL版本 MySQL下载完成后,找到下载到本地的文件,按照下面所示的步骤双击进行安装: 步骤1:双击MySQL安装程序(mysql-installer-community-5.6.10.1),会弹出如下图1.4所示的欢迎窗口。

如何导入导出MySQL数据库

如何导入导出MySQL数据库 1. 概述 MySQL数据库的导入,有两种方法: 1) 先导出数据库SQL脚本,再导入; 2) 直接拷贝数据库目录和文件。 在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。 所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。 2. 方法一SQL脚本形式 操作步骤如下: 2.1. 导出SQL脚本 在原数据库服务器上,可以用phpMyAdmin工具,或者mysqldump(mysqldump命令位于mysql/bin/目录中)命令行,导出SQL 脚本。 2.1.1 用phpMyAdmin工具 导出选项中,选择导出“结构”和“数据”,不要添加“Drop DATABASE”和“Drop TABLE”选项。 选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。 将导出的SQL文件保存下来。 2.1.2 用mysqldump命令行 命令格式 mysqldump -u用户名-p 数据库名> 数据库名.sql 范例: mysqldump -uroot -p abc > abc.sql (导出数据库abc到abc.sql文件) 提示输入密码时,输入该数据库用户名的密码。 2.2. 创建空的数据库 通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。 2.3. 将SQL脚本导入执行 同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。 2.3.1 用phpMyAdmin工具 从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。 在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。 注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件 比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。 gzip使用方法: # gzip xxxxx.sql

大数据存储技术研究

大数据存储技术研究 3013218099 软工二班张敬喆 1.背景介绍 大数据已成为当前社会各界关注的焦点。从一般意义上讲,大数据是指无法在可容忍的时间内,用现有信息技术和软硬件工具对其进行感知、获取、管理、处理和服务的数据集合。近年来,大数据的飙升主要来自人们的日常生活,特别是互联网公司的服务。据著名的国际数据公司(IDC)的统计,2011年全球被创建和复制的数据总量为1.8ZB(1ZB=1021B),其中75%来自于个人(主要是图片、视频和音乐),远远超过人类有史以来所有印刷材料的数据总量(200PB,1PB=1015B)。 然而,与大数据计算相关的基础研究,诸如大数据的感知与表示、组织与存储、计算架构与体系、模式发现与效应分析等,目前还没有成体系的理论成果。对于大数据计算体系的研究,一方面,需要关注大数据如何存储,提供一种高效的数据存储平台;另一方面,为了应对快速并高效可靠地处理大数据的挑战,需要建立大数据的计算模式以及相关的优化机制。 2.相关工作 为了应对数据处理的压力,过去十年间在数据处理技术领域有了很多的创新和发展。除了面向高并发、短事务的OLTP内存数据库外(Altibase,Timesten),其他的技术创新和产品都是面向数据分析的,而且是大规模数据分析的,也可以说是大数据分析的。 在这些面向数据分析的创新和产品中,除了基于Hadoop环境下的各种NoSQL外,还有一类是基于Shared Nothing架构的面向结构化数据分析的新型数据库产品(可以叫做NewSQL),如:Greenplum(EMC收购),Vertica(HP 收购),Asterdata(TD 收购),以及南大通用在国内开发的GBase 8a MPP Cluster等。目前可以看到的类似开源和

查看Oracle字符集及如何修改字符集

查看Oracle字符集及如何修改字符集 文章分类:数据库 一、什么是oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。 影响oracle数据库字符集最重要的参数是NLS_LANG参数。 它的格式如下: NLS_LANG = language_territory.charset 它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。 其中: Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK 从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。 所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。 二.查看数据库字符集 这涉及三方面的字符集, 一是oracel server端的字符集; 二是oracle client端的字符集; 三是dmp文件的字符集。 在做数据导入的时候,需要这三个字符集都一致才能正确导入。 1、查询oracle server端的字符集 有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种: SQL>select userenv(‘language’) from dua l; 结果类似如下:AMERICAN _ AMERICA. ZHS16GBK 2、如何查询dmp文件的字符集 用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit 打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集: SQL> select nls_charset_name(to_number('0354','xxxx')) from dual; ZHS16GBK 如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上): catexp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6 然后用上述SQL也可以得到它对应的字符集。 3、查询oracle client端的字符集 这个比较简单。 在windows平台下,就是注册表里面相应OracleHome的NLS_LANG。还可以在dos窗口里面自己设置,比如: setnls_lang=AMERICAN_AMERICA.ZHS16GBK 这样就只影响这个窗口里面的环境变量。

数据库的存储结构(文件、记录的组织和索引技术)

数据库的存储结构(文件、记录的组织和索引技术) by 沈燕然0124141 利用课余时间自学了第6章《数据库存储结构》,对于数据 库不同层次的存储结构,文件记录组织和索引技术有了一定的 了解,在这篇札记中将会结合一些具体应用中涉及到的数据存 储和索引知识,以及通过与过去学习过的一些数据结构比较来 记录自己学习的心得体会。这些实例涉及不同的数据库系统, 如Oracle, DB2和Mysql等等,它们之间会有一些差异。不过 本文旨在探讨数据存储方面的问题,因而兼容并包地将其一并收入,凡是可能需要说明之处都会加上相应的注解。:) 1、数据库(DBS)由什么组成?——逻辑、物理和性能特征 1、什么是数据库系统(DBS)——DBS用文件系统实现 在关系模型中,我们把DBS看成关系的汇集。DBS存在的目的就是为了使用户能够简单、方便、容易地存取数据库中的数据。因此在用户的眼中,数据库也就是以某种方式相关的表的集合。用户并不需要去关心表之间关系,更不需要了解这些表是怎样存储的。但是我们现在从DBA(数据库管理员)的角度来看,情况就比那稍稍复杂一点。 实际的数据库包含许多下面列出的物理和逻辑对象: ?表、视图、索引和模式(确定数据如何组织) ?锁、触发器、存储过程和包(引用数据库的物理实现) ?缓冲池、日志文件和表空间(仅处理如何管理数据库性能) 2、什么是表空间?——表空间相当于文件系统中的文件夹。 表空间被用作数据库和包含实际表数据的容器对象之间的一层,表空间可以包含多个不同的表。用户处理的实际数据位于表中,他们并不知道数据的物理表示,这种情况有时被称为数据的物理无关性。

上图描述了一个ORACLE数据库大致的表空间组织,USER中存放主要的数据表,TEMP存放临时数据表,INDX存放索引,TOOLS存放回退段(RBS). 表空间在DB2数据库系统中是比较典型的说法,在Mysql等系统中也直接使用文件系统中文件夹的概念。新建一个表的时候可以指定它所在的表空间,至于用文件具体存储数据时如何存储这可能就是各个数据库系统的商业机密了,至少DB2是这样。另外值得关注的一点是不同于oracles对表空间的严格要求,Mysql的数据库形式相对比较简单,以文件夹的形式存放在安装目录的/data/下面,该数据库的每一个表对应两个文件,一个存放表中数据,另一个存放元数据信息,也就是建表时指明的列属性等等信息。 3、文件中的记录在物理上如何实现?——文件组织形式 在外存中,DB以文件形式组织,而文件由记录组成。文件结构由OS的文件系统提供和管理。文件组织有两种方式——定长记录格式和变长记录格式。 那种格式更好? 定长记录格式——优点是插入操作较简单。 缺点是对记录长度有硬性要求,而且有的记录可能横跨多个快,降低读写效率。 变长记录格式——优点是记录长度自由方便 缺点是记录长度差异导致删除后产生大量“碎片”,记录很难伸长,尤其“被拴记录”移动代价相当大。 中庸之道——预留空间和指针方式 记录长度大多相近——采用预留空间方法,取最大记录长为统一标准,在短记录多于空间处填特定空值或记录尾标志符。 记录长度相差很大——采用指针形式(每纪录后的指针字段把相同属性值记录链接起来)。文件中使用两种块——固定块(存放每条链中第一条记录)和溢出块(存放其 余纪录)。 3、记录在文件中怎样组织?

虚拟机CentOS下MySQL的安装与配置

CentOS下MySQL的安装与配置 一、mysql是关系型数据库,可以去官网下载rpm包安装,但是也可以直接用yum 二、卸载原有的mysql 输入命令:# rpm –qa | grep mysql //查看是否安装了mysql。 使用# rpm –e mysql //普通删除模式。 # rpm –e –nodeps mysql //强力删除模式,若上个命令删除时有提示依赖项,次命 令可以强力删除。 三、通过yum安装mysql # yum list | grep mysql //查看yum提供的mysql可以下载的版本 然后# yum install –y mysql-server mysql mysql-deve // 安装mysql、mysql-server、mysql-deve即客户端和服务器

安装完毕! 四、mysql的初始化 安装完mysql后,就会多处一个mysqld的服务,此就是数据库服务,可以输入# service mysqld start 命令启动mysqld服务。第一次启动会有很多提示信息,那是在进行初始化配置,下一次启动就不会有了,就像: 我们在使用mysql数据库的时候,都要先启动mysqld,我们可以将mysqld服务设置成开机启动,免得每次我们都要去启动一下。通过# chkconfig mysqld on 设置 Mysql安装完后只有一个root管理员账户,没有密码,我们可以为root帐号设置密码(这个为mysql的root账户,不是linux的root账户)# mysqladmin –u root password ‘new pw’然后通过mysql –u root –p 命令登陆我们的mysql 五、mysql的主要配置文件 1、/etc/https://www.360docs.net/doc/d116379015.html,f这是mysql的主配置文件 我们可以查看一下一些信息

access数据库导入和导出

一、excel数据导入到access数据库 (1)直接导入法 1.启动Access,新建一数据库文件。 2.在“表”选项中,执行“文件→获取外部数据→导入”命令,打开“导入”对话框。 3.按“文件类型”右侧的下拉按钮,选中“Microsoft Excel(.xls)”选项,再定位到需要转换的工作簿文件所 在的文件夹,选中相应的工作簿,按下“导入”按钮,进入“导入数据表向导”对话框(图1)。 4.选中需要导入的工作表(如“工程数据”),多次按“下一步”按钮作进一步的设置后,按“完成”按钮。 注意:如果没有特别要求,在上一步的操作中直接按“完成”按钮就行了。 5.此时系统会弹出一个导入完成的对话框,按“确定”按钮。 至此,数据就从Excel中导入到Access中。 (2)建立链接法 1.启动Access,新建一数据库文件。 2.在“表”选项中,执行“文件→获取外部数据→链接表”命令,打开“链接”对话框。 二、Access中数据导入excel 在Excel中使用Access数据 你可能想在Excel工作簿中使用Access数据,以便利用数据分析和绘制图表功能、数据排列和布局的灵活性或其他一些Access中不可用的功能。 将Access数据复制到Excel中 你能从Access的数据表视图复制数据,然后将数据粘贴到Excel工作表中。 1. 启动Access,然后打开包含要复制的记录的表、查询或窗体。 2. 在“起始页”选项卡上单击“视图”,然后单击“数据表视图”。 3. 选择要复制的记录。 如果要选择特定列,请在相邻的列标题之间拖动。 4. 在“开始”选项卡上的“剪贴板”组中,单击“复制”。 5. 启动Excel,然后打开要在其中粘贴数据的工作表。 6. 单击要显示第一个字段名称的工作表区域的左上角。 若要确保复制的记录不替换现有记录,请确保工作表中你单击的单元格的下方和右方不存在数据。 7. 在“开始”选项卡上的“剪贴板”组中,单击“粘贴”。

搞懂oracle字符集

搞懂oracle字符集 作为一个ORACLE DBA,在工作中会经常处理由于字符集产生的一些问题。但是当真正想写一些这方面的东西时,却突然又没有了头绪。发了半天呆,还是决定用两个字符集方面的例子作为切入点,倒不失为一个头绪,说不定在实验的过程中,问题就会一个接着一个的浮现出来。 现在,让我们切入正题。 我用的数据库是oracle10.2.0.3,数据库字符集是al32utf8。 客户端就是同一台机器的windows xp. 下面是演示的例子: SQL>drop table test purge; Table dropped. SQL>create table test(col1number(1),col2varchar2(10)); Table created. --session1设置客户端字符集为zhs16gbk(修改注册表nls_lang项的characterset为zhs16gbk)向表中插入两个中文字符。 SQL>insert into test values(1,'中国');--1为session1的标记 1row created. SQL>commit; Commit complete. --session2设置客户端字符集al32utf8(修改注册表nls_lang项的characterset为al32utf8),与数据库字符集相同。向表中插入两个和session1相同的中文字符。 SQL>insert into test values(2,'中国');--2为session2的标记 1row created. SQL>commit; Commit complete. --session1 SQL>select*from test; COL1COL2 ------------------------------ 2??? 1中国

图像数据存储技术

图像数据存储技术

————————————————————————————————作者:————————————————————————————————日期: 1

图像数据存储技术 摘要:,将多媒体信息引入到系统当中,随着数据库应用技术的发展,已经成为人们对现代数据库应用系统的要求之一。本文通过对图像数据的不同存储方式的分析,提出在学生信息系统中以数据库方式存储学生照片的方法,并且使用VB 6.0 中的ADO 数据控件实现了图像数据入库操作及照片的浏览。 关键词:信息系统;图像; 概述:随着数据库应用技术的发展,将多媒体信息引入到系统当中,使管理系统功能更强大,界面更美观,信息更丰富,已经成为人们对现代数据库应用系统的要求之一。在学生信息系统中,除了需要将每一名学生的基本数据信息存入系统,还需要将该学生的照片以图像信息的形式存入系统。这样可以随时查看学生的照片,或用来制作学生证等证件,以提高证件的可信度并减少证件照片处理的工作量。 图像的数据量要远远大于数据库中存储的普通数据的数据量。因此,组织与管理好图像数据与数据库应用系统的结构、效率、安全性、完整性息息相关。本文给出了一种在学生信息系统中组织与管理图像信息的方法,并利用ADO 技术设计实现了图像信息的入库及浏览等操作。 1.存储图像数据的策略 1.1 以文件方式存储图像数据 图像信息通常是通过扫描或摄像的方法进入系统的,并且一般的多媒体系统中都采用文件形式存放数据。所以在数据库应用系统中,可以采用文件形式存放图像数据。首先,将每一幅图像组织成一个文件,众多的图像文件形成图像文件集。在学生基础信息表中设置一个存放照片图像文件物理文件名的字段(pFileName),在该字段中存放每一名学生照片文件的存储路径及文件名。这样就建立起了学生基础信息表与照片文件集之间的关联(如图1 所示)。

安装和配置MySQL服务器

安装和配置MySQL数据库服务器模块 Lab1:源码安装MySQL服务器 实验要求: 1)通过源码安装MySQL服务器,要求安装到/usr/local/mysql目录,配置文件目录为/etc。 2)设置开机时自动运行MySQL服务器。 3)关闭rpm软件安装MySQL服务器(如果存在)。 实验时间:60分钟 实验步骤: 1、进入/root/lamp_software目录,找到mysql-6.0.4-alpha.tar.gz,并解压源码文件。如下所示。 [root@localhost lamp_software]#tar-zxf mysql-6.0.4-alpha.tar.gz-C/usr/local [root@localhost lamp_software]#cd/usr/local/ [root@localhost local]#ls bin games lib mysql-6.0.4-alpha sbin src etc include libexec RealPlayer share 2、配置mysql源码安装文件,设置MySQL安装到/usr/local/mysql目录,配置文件目录为/etc/目录。 [root@localhost local]#cd mysql-6.0.4-alpha [root@localhost mysql-6.0.4-alpha]#./configure--prefix=/usr/local/mysql--sysconfdir=/etc/ 3、编译mysql源码 [root@localhost mysql-6.0.4-alpha]#make 显示以下信息,表示编译成功。 /bin/chmod+x bench-count-distinct-t /bin/mv bench-count-distinct-t bench-count-distinct make[1]:Leaving directory`/usr/local/mysql-6.0.4-alpha/sql-bench' Making all in win make[1]:Entering directory`/usr/local/mysql-6.0.4-alpha/win' make[1]:Nothing to be done for`all'. make[1]:Leaving directory`/usr/local/mysql-6.0.4-alpha/win' 4、安装mysql服务器 [root@localhost mysql-6.0.4-alpha]#make install 显示以下信息,表示编译成功。 make[2]:Leaving directory`/usr/local/mysql-6.0.4-alpha/sql-bench' make[1]:Leaving directory`/usr/local/mysql-6.0.4-alpha/sql-bench' Making install in win make[1]:Entering directory`/usr/local/mysql-6.0.4-alpha/win' make[2]:Entering directory`/usr/local/mysql-6.0.4-alpha/win'

数据库数据导入导出

数据库 系统分别拥有一份独立的Oracle数据库逻辑备份文件(后缀为dmp的操作系统文件),每个子系统的导入数据库结构和基础数据的操作是单独执行的。 第一步,以超级管理用户进入Oracle创建用户和授权 第二步:创建表空间(create tablespace law datafile 'D:/oradate/law.dbf' size 300m autoextend on next 50m;) 第三步: --删除用户(第一次可以不用执行,以后想要重新导入数据库才执行这个语句)

drop user law_test cascade; --创建用户和授权 create user law_test identified by law_test default tablespace law; --授权 grant connect,resource,select any dictionary , unlimited tablespace,create any view, create materialized view to law_test; 导入数据库 1、第一步:用Oracle数据库备份恢复命令,导入数据库结构和基础 数据,格式如下: imp {数据库用户名}/{数据库用户密码}file=”{带完整路径的Oracle数据库逻辑备份文件}” imp law_test/law_test file=d:\db\law_test.dmp full=y 2,第二步,看到的导入的页面

最后的提示说导入成功的提示; 导出数据库 exp {数据库用户名}/{数据库用户密码}file=”{带完整路径的Oracle数据库逻辑备份文件}” exp law_test/law_test file=”d:\law_test.dmp”;

Oracle 导入导出字符集乱码问题

Oracle 导入导出字符集乱码问题 导出/导入与字符集 进行数据的导入导出时,我们要注意关于字符集的问题。在EXP/IMP过程中我们需要注意四个字符集的参数:导出端的客户端字符集,导出端数据库字符集,导入端的客户端字符集,导入端数据库字符集。 我们首先需要查看这四个字符集参数。 查看数据库的字符集的信息: SQL> select * from nls_database_parameters; PARAMETER VALUE ------------------------------ -------------------------------------------------------------------------------- NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CHARACTERSET ZHS16GBK NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZM

NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZM NLS_DUAL_CURRENCY $ NLS_COMP BINARY NLS_NCHAR_CHARACTERSET ZHS16GBK NLS_RDBMS_VERSION 8.1.7.4.1 NLS_CHARACTERSET:ZHS16GBK是当前数据库的字符集。 我的windows oracle编码为: NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_CHARACTERSET ZHS16GBK 我们再来查看客户端的字符集信息: 客户端字符集的参数NLS_LANG=_< territory >. language:指定oracle消息使用的语言,日期中日和月的显示。 Territory:指定货币和数字的格式,地区和计算星期及日期的习惯。 Characterset:控制客户端应用程序使用的字符集。通常设置或等于客户端的代码页。或者对于unicode应用设为UTF8。 在windows中,查询和修改NLS_LANG可在注册表中进行: HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOMExx\ xx指存在多个Oracle_HOME时的系统编号。 我这里的windows默认为: windows Client: NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16GBK 在Linux redhat5中:

MySQL5.6版本安装及配置过程

编辑者:Vocabulary 下面详细介绍5.6版本MySQL的下载、安装及配置过程。 图1.1 MySQL5.6 目前针对不同用户,MySQL提供了2个不同的版本: MySQL Community Server:社区版,该版本完全免费,但是官方不提供技术支持。 MySQL Enterprise Server:企业版,它能够高性价比的为企业提供数据仓库应用,支持ACID事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能。但是该版本需付费使用,官方提供电话及文档等技术支持。 目前最新的MySQL版本为MySQL 5.6,可以在官方网站https://www.360docs.net/doc/d116379015.html,/downloads/下载该软件。下图1.2所示的MySQL官网上单击图片上的“Download”超链接或点击左边标记处,然后按照提示一步步操作就可以将MySQL软件下载到本地计算机中了。注意这里我们选择的是数据库版本是“Windows (x86, 32-bit), MSI Installer”,如下图1.3所示。 图1.2 MySQL官方网站

图1.3 选择MySQL版本 当点击download后会弹出如下页面: 注:下载MySql要求注册:<用户可注册或不注册>,如果不想注册就点击左下角标记处—点击后就弹出如图中下载提示->点击保存文件开始下载。 MySQL下载完成后,找到下载到本地的文件,按照下面所示的步骤双击进行安装:步骤1:双击MySQL安装程序(mysql-installer-community-5.6.10.1)会弹出如下图1.4所示: 图1.4 MySQL欢迎界面

步骤2:单击图1.4中的“Install MySQL Products”文字,会弹出的用户许可证协议窗口,如下图1.5所示: 图1.5 用户许可证协议窗口 步骤3:选中“I accept the license terms”的前面的选择框,然后点击【Next】按钮,会进入查找最新版本界面,效果如下图1.6所示: 图1.6 查找最新版本窗口 步骤4:单击【Execute】按钮,会进入安装类型设置界面,效果如下图1.7所示。 图1.7 安装类型设置窗口

实验一空间数据库的创建与数据导入

实验一空间数据库的创建与数据导入 一、实验目的 1.利用ArcCatalog管理地理空间数据库,熟悉ArcCatalog的操作。 2、理解Geodatabse空间数据库模型的相关概念,掌握创建个人地理数据库 的方法。 二、实验内容 1、拷贝实验数据 2、启动ArcCatalog,点击按钮(连接到文件夹). 建立到data 的连接 3、打开coverage、shapefile文件夹,查看下的要素及属性,理解两种数据模型。 4、打开montgomery.gdb 空间数据库查看并理解montgomery.gdb数据库中包含 的要素集、要素类等信息,在预览窗口预览要素类等几何特性。 4、查看属性信息 在此预览窗口的下方,“预览”下拉列表中,选择“表格”。可以看到属性表,查看它的属性字段信息。

5、向Geodatabase导入coverage数据 (1)在ArcCatalog中右击Water 数据集,指向Import,点击Feature Class(multiple) (2)单击Browse 按钮,定位到laterals coverage中的弧段要素类, 单击Add. (3)单击OK,此时laterals_arc 要素类加入到Water 数据集. (4)在arccatalog中将laterals_arc要素类重命名为laterals (5)右击Laterals 并单击Properties,为该要素类输入别名“Water laterals”(6)单击Fields 标签,单击OBJECTID 字段并为该字段输入别名“Feature identifier”. (7)单击Preview 标签察看其特征.

Web应用中的中文问题以及数据表乱码

一、Web应用中的中文问题: Jsp页面编码:<%@page pageEncoding=“utf-8”%> 告诉jsp引擎,在将jsp转成servlet源文件时,该jsp文件的编码是什么。<%@page contentType=“text/html;charset=utf-8”%>相当于 Servlet中的response.setContextType()。即设置相应头。 浏览器会依据该编码来显示页面,保持jsp文件时,其真正的编码应该与设置的一致。 Html: 保存html文件时,其真正的编码应该与设置的一致。 Servlet: 获取请求参数时: request.setCharacterEncoding("utf-8"); 如果servlet要直接输出一些信息: response.setContentType("text/html;charset=utf-8"); 数据库:mysql 设置数据库编码: Create database servletdb(数据库名) default character set utf8; 如果数据库已经建好了,可以使用: Alter database servletdb(数据库名) default character set utf8; (修改编码) set names gbk; 二、工具中修改编码方式: 1、改变 Eclipse 或者 MyEclipse 新建文件的默认编码 eclipse 的: window-->preferences-->General-->ContentType 改成 utf-8 。 myEclipse 的 : window-->preferences-->myEclipse-files and editors-jsp encoding 设成ISO10646/UTF-8. 2、 eclipse 和java文件编码设定 Window-->preferences-->General-->Workspace Text file encoding 改为UTF-8 。方便项目移植到linux下编写。 3、项目编码 这里遇到的问题是,眼前的项目已经编写了大部分了,然而,只想接下来的新建的文件的编码是UTF-8 ,而以前的不变。那么右键自己的项目

相关文档
最新文档