DB装入导入和导出及安全性完美版资料_第1页
DB装入导入和导出及安全性完美版资料_第2页
DB装入导入和导出及安全性完美版资料_第3页
DB装入导入和导出及安全性完美版资料_第4页
DB装入导入和导出及安全性完美版资料_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Module1

DB2装入、导入和导出及安全性数据移动DB2中所谓的数据移动,包括:

1.

数据的导入(Import)

2.

数据的导出(Export)

3.

数据的装入(Load)

数据移动导入和装入都是利用DB2的相关命令把某种格式的文件中的数据保存到数据库中的表中

导出是指把DB2数据库的表中的数据保存到某种格式的文件当中去

数据移动数据移动的作用:

如果要在不同的数据库管理系统之间转移数据,数据移动通常是最实用的一种方法,因为任何一种数据库管理系统都支持常用的几种文件格式,通过这个通用的接口,就很容易实现不同系统间数据的转移。

这三个命令中,Export最简单,因为从表中向文件转移数据,通常不会出现错误,也不会有非法的数据。

数据移动首先介绍一下文件的格式,用于DB2数据移动的文件格式有四种:

1.

ASC——非定界ASCII文件,是一个ASCII字符流。数据流中的行由行定界符分隔,而行中的每一列则通过起始和结束位置来定义。例如:

数据移动2.

DEL——定界ASCII文件,也是一个ASCII字符流。数据流中的行由行定界符分隔,行中的列值由列定界符分隔。文件类型修饰符可用于修改这些定界符的默认值。例如:

数据移动3.

WSF——(work

sheet

format)为工作表格式,用于与Lotus系列的软件进行数据交换。

4.

PC/IXF——是集成交换格式(Integration

Exchange

Format,IXF)数据交换体系结构的改编版本,由一些列可变长度的记录构成,包括头记录、表记录、表中每列的列描述符记录以及表中每行的一条或多条数据记录。PC/IXF

文件记录由包含了字符数据的字段组成。

数据移动第一部分:数据的导出(Export)

例一:把Org表中的所有数据导出到文件C:\ORG.TXT中。

Export

to

c:\org.txt

of

del

select

*

from

org

其中,of

del表示导出到的文件的类型,在本例中导出到一个非定界文本文件中;后面的select

*

from

org是一个SQL语句,该语句查询出来的结果就是要导出的数据。

数据移动例2:以ASC格式将数据导出到文件

Export命令是不支持ASC格式文件的,所以如果想导出ASC这样规整的格式,需要程序员自己进行转换操作,思路是将各种数据类型都转换成定长字符串,然后把各个要导出的字段合并成为一个字段。

例如创建如下结构的表n:

create

table

n(a

int,b

date,c

time,d

varchar(5),e

char(4),f

double)

然后插入两条数据:

insert

into

n

values(15,’2004-10-21’,’23:12:23’,’abc’,’hh’,35.2)

insert

into

n

values(5,’2004-1-21’,’3:12:23’,’bc’,’hhh’,35.672)

数据移动

要想把这两条数据以规整的格式导出到文件中,进行如下操作:

export

to

c:\test.txt

of

del

select

char(a)

||

char(b)

||

char(c)

||

char(d,5)

||

e

||

char(f)

as

tmp

from

n

这样导出的结果与ASC格式的文件非常类似,只是每一行的前后多出了一对双引号,对此我们可以使用文本工具(如写字板、记事本等)把双引号删除掉,也可以置之不理,在以后导入的时候直接控制格式(忽略双引号)

数据移动例3:大数据的导出

export

to

d:\myfile.del

of

del

lobs

to

d:\lob\

lobfile

lobs

modified

by

lobsinfile

select

*

from

emp_photo

该命令把emp_photo表的数据导出到d:\myfile.del文件中,其结果为:

数据移动例五:把导出信息保存在消息文件中。

export

to

d:\awards.ixf

of

ixf

messages

d:\msgs.txt

select

*

from

staff

where

dept

=

20

这个例子把staff表中dept=20的数据导出到d:\awards.ixf文件中,所有的导出信息都保存在d:\msgs.txt文件中(无论是成功、警告还是失败信息),这样,管理员可以通过观察信息文件找到问题所在。

数据移动例5:给导出数据列重命名。

export

to

d:\awards.ixf

of

ixf

method

n(c1,c2,c3,c4,c5,c6,c7)

messages

d:\msgs.txt

select

*

from

staff

where

dept=20

在默认情况下,导出的每一列数据以表中对应的字段名自动命名,我们可以通过method

n子句给每一列重新命名,需要注意的是,这个子句只在ixf和wsf格式文件中有效,在文本文件中不能使用。

视图

视图是从一个或多个表或视图派生的虚拟表;在检索数据时,可以把它们和表交替使用。当您希望隐藏基本表中的某些列或行时,视图会非常有用。如果不想创建表的另一个副本,则可以用视图创建一个虚拟表,它只向用户显示您希望他们看到的数据。

当通过视图更改数据时,底层表本身的数据也被更改。视图本身不包含任何实际数据。在某些情况下视图是不可更新的,因此视图可以分类为可删除的、可更新的、可插入的或只读的。分类表明了可以对该视图允许执行的SQL操作的类型。

视图

一个简单视图

我们将用一个简单的示例来说明视图的能力和用处。考虑下列人事(Personnel)表:CREATETABLEPERSONNEL(PERSON_IDINTNOTNULL,FIRST_NAMEVARCHAR(20),LAST_NAMEVARCHAR(20),SALARYDEC(9,2),EXTENSIONCHAR(4),...)它并不是最复杂的人事表,但有助于说明视图的一个要点。这个表包含了一些高度敏感的信息,譬如雇员的薪水。但是,这个表中的大部分信息可以为其它部门或用户所用。例如,extension(电话号码)列可以用来产生内部电话簿。我们如何利用这些信息,同时又不危及薪水信息的完整性呢?

视图

您可能猜到了,我们的解决方案与视图有关。可以在这个表上创建限制用户只能查看某些列的视图。下列SQL语句创建了一个视图,它显示用户的名、姓和电话号码:CREATEVIEWTELEPHONE_BOOKAS(SELECTFIRST_NAME,LAST_NAME,EXTENSIONFROMPERSONNEL)向用户授予访问该视图的权限,而不是基本人事表的权限。针对该视图发出SELECT语句的用户只能看到三个列:

视图

视图语法

CREATEVIEWview-name(columnlist)AS(fullselect)实际上这并不是命令语法的所有部分,但它确实说明了可能您最为常用的部分。CREATE语句包含以下部分:View-name:视图的标识。它具有和实际表名相同的限制,并且不能与现有表的名称相同。

Columnlist:这个可选的部分将告诉DB2当返回结果集时,列的名称应该是什么。例如,在先前的示例中,我们可以对所有的列重新命名,就象这样:CREATEVIEWTELEPHONE_BOOK(FIRST,LAST,PHONE)AS(SELECTFIRST_NAME,LAST_NAME,EXTENSIONFROMPERSONNEL)Fullselect:这是将要用来生成视图定义的SQL。全选择(fullselect)可以根据WHERE子句返回独立的行,或者,它可以执行连接、聚集或任何复杂的SQL操作。

视图

带UNION的视图

DB2的一些发行版已经支持使用UNIONALL将表连接起来形成视图。假定DB2能够确定将相应命令应用到哪个表的话,也允许使用SELECT、DELETE和UPDATE运算符。在DB2V8中,对INSERT运算符的支持已经扩展到带UNIONALL的视图了.只要满足下列条件:表达式都具有相同的数据类型至少在一个列上存在约束,并可以使用该约束唯一地标识应在哪里插入行,并且约束的范围没有重叠只要被更改的列不违反该列的约束,用这种方式定义的视图也支持UPDATE操作。

视图

可更新视图

可更新视图是可删除视图的特例。当可删除视图中至少有一个列可更新时,它就成了可更新视图。当符合下列所有规则时,视图列就是可更新的:视图必须是可删除的该列必须解析成表的列(而不是使用解引用操作),并且一定不能指定READONLY选项

视图

WITHCHECKOPTION

如果视图定义包括条件(譬如WHERE子句),则必须使用WITHCHECKOPTION定义该视图。这个选项可以确保数据库中正在修改的数据的完整性。如果在INSERT或UPDATE操作期间违反了条件,则返回SQL错误。下面是一个使用了WITHCHECKOPTION的视图定义的示例。要确保总是检查条件,WITHCHECKOPTION是必需的。在这种情况下,我们希望确保DEPT总是10。这会限制DEPT列的输入值。当使用视图插入新值时,总是强制执行WITHCHECKOPTION。CREATEVIEWEMP_VIEW2(EMPNO,EMPNAME,DEPTNO,JOBTITLE,HIREDATE)ASSELECTID,NAME,DEPT,JOB,HIREDATEFROMEMPLOYEEWHEREDEPT=10WITHCHECKOPTION;如果这个子句不存在,那么某个使用该视图的用户就有可能更新某条记录,使其不再属于该视图。例如,下列SQL语句可能会引起一些问题。UPDATEEMP_VIEW2SETDEPT=20WHEREDEPT=10;这个语句的结果是该视图现在不包含任何记录,因为部门10不再有雇员了。

视图

不可操作的视图

不可操作的视图是SQL语句无法使用的视图。如果出现以下情况,视图就会成为不可操作的视图:视图定义所依赖的特权被撤销。

视图定义所依赖的对象(譬如表、别名或函数)被删除。视图定义所依赖的视图变得不可操作。该视图定义(子视图)的超视图变得不可操作。DB2中的视图无法更改。必须用您所希望的更改重新创建它。

DB2安全

DB2安全性概述

DB2安全性由外部安全性服务和内部DB2权限机制共同处理。外部安全性服务对希望访问DB2服务器的用户进行认证;DB2之外的安全性软件负责认证工作。该软件可以是操作系统的安全性工具,也可以是象Kerberos这样的独立产品。一旦成功验证了用户标识和密码,内部DB2进程即接管并确保授权用户执行请求的操作。

DB2安全认证类型

认证类型确定在哪里验证用户标识/密码对。受支持的认证类型有:SERVER(缺省值)KERBEROSCLIENT

DB2安全用SERVER选项认证

使用SERVER选项,用户标识和密码被发送到服务器进行验证。请考虑以下示例:

DB2安全用KERBEROS认证

Kerberos是一个外部安全性工具,它使用传统密码术创建共享的加密密钥。它提供了一种安全的认证机制,因为不再需要以明文形式在网络上传送用户标识和密码。通过使用加密密钥,它还使单点登录到远程DB2服务器成为可能。

DB2安全在客户机上认证

该选项允许认证在客户机上进行。当用户成功登录到客户机时,无须询问密码就可以与数据库建立连接。

DB2安全信任客户机

TRUST_ALLCLNTS决定哪些类型的客户机是可信的。该参数有以下三个可能值:YES―信任所有客户机。这是缺省设置。认证将在客户机上进行。有一个例外,我们将在下面介绍TRUST_CLNTAUTH时更详细地讨论。NO―只信任有可靠安全性工具的客户机(也就是可信的客户机)。若是不可信的客户机要进行连接,必须提供用户标识和密码以便在服务器上进行认证。这一选项只用于包、例程、模式、表、表空间和视图。IMPLICIT_SCHEMA允许用户用还不存在的模式创建对象。View-name:视图的标识。如果通过withgrantoption接收了特权,则用户将不能从其他用户处取消这些特权。grantcontrolonpackagedev.CREATETABLEPERSONNEL这个表包含了一些高度敏感的信息,譬如雇员的薪水。这一选项只用于包、例程、模式、表、表空间和视图。若是不可信的客户机要进行连接,必须提供用户标识和密码以便在服务器上进行认证。要允许这样的行为,可使用TRUST_CLNTAUTH来指定当在connect语句或attach命令中提供了用户标识和密码时,应该在哪里进行认证。例如创建如下结构的表n:

create

table

n(a

int,b

date,c

time,d

varchar(5),e

char(4),f

double)

然后插入两条数据:

insert

into

n

values(15,’2004-10-21’,’23:12:23’,’abc’,’hh’,35.可更新视图是可删除视图的特例。DB2中所谓的数据移动,包括:

1.后面的select

*

from

org是一个SQL语句,该语句查询出来的结果就是要导出的数据。DB2的一些发行版已经支持使用UNIONALL将表连接起来形成视图。CLIENT―在客户机上执行认证;SALARYDEC(9,2),视图是从一个或多个表或视图派生的虚拟表;视图定义所依赖的视图变得不可操作。revokeloadondatabasefromgroupdbagrp;如果在INSERT或UPDATE操作期间违反了条件,则返回SQL错误。数据的导入(Import)

2.grantselect,update,deleteontableemployeetouserjohnwithgrantoptionsssss该选项允许认证在客户机上进行。grantloadondatabasetogroupdbagrp;export

to

d:\awards.Columnlist:这个可选的部分将告诉DB2当返回结果集时,列的名称应该是什么。例如,extension(电话号码)列可以用来产生内部电话簿。DB2安全请考虑这样一个方案:其中DB2服务器将认证设置为CLIENT,将TRUST_ALLCLNTS设置为YES。您可以以localuser

的身份登录到Windows2000机器,然后无需指定用户标识和密码即可连接到远程数据库。localuser

将成为数据库上已连接的权限标识。如果希望用另一个用户标识连接到数据库―例如用poweruser

连接,该用户有执行数据库备份的权限―该怎么办?要允许这样的行为,可使用TRUST_CLNTAUTH来指定当在connect语句或attach命令中提供了用户标识和密码时,应该在哪里进行认证。允许使用两个值:CLIENT―在客户机上执行认证;不要求提供用户标识和密码。SERVER―当提供了用户标识和密码时,在服务器上进行认证。

让我们看一些说明这两个参数用法的示例:

DB2安全

DB2安全

设置权限级别

权限级别控制执行数据库管理器维护操作和管理数据库对象的能力。在DB2中有五种权限:

DB2安全SYSADM拥有管理实例的全部特权,并且还有对底层数据库中数据的访问权。SYSCTRL和SYSMAINT在管理实例、实例的数据库和数据库对象方面有一定的特权。这些权限没有对数据的访问权。例如,不允许象“SELECT*FROMmytable”或“DELETEFROMmytable”这样的语句。DBADM有对指定的数据库执行管理任务的特权。它还拥有对数据库的全部数据访问权。LOAD有对特定数据库运行装入实用程序的特权。别控制执行数据库管理器维护操作和管理数据库对象的能力。在DB2中有五种权限:

DB2安全

DB2安全管理DB2权限

通过将在操作系统或安全性工具中定义的用户组分配给相关参数,以在数据库管理器配置中设置SYS*权限。该参数值必须是最大长度为8个字符的组名,如下图所示:

DBADM和LOAD是数据库级权限。可用grant语句将其授予用户或用户组,并且可用revoke语句取消:connecttosample;grantdbadmondatabasetouserjohn;grantloadondatabasetogroupdbagrp;revokeloadondatabasefromgroupdbagrp;DB2安全设置特权

特权给予用户以特定方式访问数据库对象的权限。以下列表汇总了不同数据库对象的特权。数据库特权:

CONNECT允许用户连接数据库。CREATETAB允许用户在数据库中创建新表。IMPLICIT_SCHEMA允许用户用还不存在的模式创建对象。CREATE_EXTERNAL_ROUTINE允许用户创建用C、JavaTM语言、OLE和COBOL编写的存储过程。

模式特权:

CREATEIN允许用户创建模式内的对象。ALTERIN允许用户更改模式内的对象。DROPIN允许用户删除模式内的对象。

DB2安全表空间特权:

USEOFTABLESPACE允许用户在指定的表空间内创建表。表和视图特权:

CONTROL给予用户对表或视图的所有特权,以及将这些特权(CONTROL除外)授予其他用户的能力。ALTER允许用户更改表或视图。

DELETE允许用户删除表或视图的记录。INDEX允许用户对表创建索引。INSERT允许用户将记录项插入表或视图中。REFERENCES允许用户创建和删除外键,指定关系中作为父代的表。SELECT允许用户从表或视图中检索行。UPDATE允许用户更新表或视图中的记录。这一特权还能限制用户只能更新指定的列:grantupda

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论