powersybedit-hobbylu
  首页 帮助 退出
最新日志
在recovery的时候发生...(2008-06-16)
15.0.2的新特性(2008-06-02)
心情沉重-心挂四川(2008-05-19)
关于AUL for syba...(2008-05-18)
无题(2008-04-26)
历史档案
最新评论
中博网友/2008-07-18
请教一个问题,我用....
访客/2008-07-15
请问一下博主
偶下载....
访客/2008-07-14
请问在那里下载,我....
访客/2008-07-02
您好,我使用的是s....
访客/2008-06-30
在哪里可以下载啊》
我的相册
我的网摘
友情链接
我的LOGO
 

本人学习研究sybase已经n多年了,从刚开始什么都不会,到现在自诩为的"专家",感受也颇深。我都会sybase什么东西呢?sybase是一个软件公司,其中包括...查看全文

·心情日记
·我的软件
·relication server
·ASE数据库

 
2007-08-07 09:54:00 
 扩展文件系统访问 

扩展文件系统访问

一、什么是扩展文件系统访问(XFS)?

ASE 12.5之后的版本包含了很多个新的特性和功能。其中有一个非常有用的就是扩展文件系统访问。

在目前的商业系统中,很多情况下数据可能并不会所有的都存入到数据库中,而有可能是以文件的方式存在,因此引入了XFS这个概念,可以让ASE管理好需要管理的文件,并能够通过sql语句来进行操作。

要能够访问操作系统文件,需要在数据库中建立对应的代理表。代理表的功能就是在文件和数据库要操作的表直接建立一个映射关系。代理表的一些特性本文中就不再赘述。建立了代理表之后,就可以使用标准的T-SQL命令来对文件进行创建、删除、写和查询了。当然这其中也包括了权限,组,属主等属性。

    扩展文件访问提供了两个不同的方式。

1、            使用文件访问,你可以使用将代理表映射到单独的一个ASCII文本文件。

2、           使用扩展文件目录访问,你可以将代理表映射到一个目录,和它的所有的子目录和文件。

二、XFS配置过程

      1XFS的授权

       XFS的功能,只有在你的ASE_XFS许可证生效之后,才能够在你的系统中使用。至于如何配置许可证,这里就不多描述,具体可以参考SYSAM相关文档。

      2、激活文件访问

       将配置参数enable cis设置为1

              sp_configure ‘enable cis’,1

三、使用文件系统访问

     1访问文件

         本例中,我们将建立一个名叫Xerrors的代理表,直接映射到%SYBASE_ASE%\install目录下的errorlog文件

create proxy_table Xerrors external file at 'c:\sybase\ASE-12_5\install\errorlog'

这条命令创建了一个只有一个名为’record’列的表,类型是varchar(255)。现在我们可以查询错误日志文件中的内容了。比如:

select record from Xerrors where record like "%ASE_XFS%"

record
------
00:00000:00000:2007/07/30 22:46:57.67 kernel  Checked out license ASE_XFS

对于代理表映射到一个文件,需要以下条件

1、           文件比如是ASCII文本格式的。

2、           ASE引擎必须有权限访问相应文件。

3、           如果文件是要被创建的,那么在创建目录需要有写权限。

2 访问行长超过255字节的文本

在这种情况下,我们需要对代理表显示指定列名以及长度,如:

create existing table Xtext (record varchar(512) null)
external file at 'c:\sybase\ASE-12_5\install\errorlog'

4、        如何定义文件中的列

对于一些格式化的文本文件,比如bcp文件等,我们可以在代理表中指定改文件的列名,就如同原始的表一样,如:

create [existing] table Xpublishers
(
 pub_id  char(4),
 pub_name varchar(40),
 city  varchar(20),
 state char(2)
)
external file at 'full file path' [
列分隔符 "<string>"]

3.4 文件访问支持的命令

支持的命令如下:

  • insert
  • select
  • truncate
  • drop

四、使用目录访问

 

1 访问一个目录

访问目录主要包括以下几个功能:

  • 操作目录,子目录还有文件efficiently insert new files with content.
  • 新建目录
  • 拷贝目录
  • 删除文件

2 目录访问规则

目录必须被ase可以访问得到。在创建代理表的时候,路径上加上’;R’可以让代理表访问子目录。

以下是创建代理表命令:

create proxy_table Xdirect
external directory at '/home/sybase/dir1;R'

3 目录访问支持的命令

  • select
  • select into
  • insert
  • delete
  • update
  • writetext
  • readtext

例子如下

select

select filename, filetype from Xdirect
where filetype = 'REG'

select into

select * into local_table
from Xdirect

select * into Xdirect
from local_table

insert

insert into Xdirect (filename, content)
values('dir2/inventory', 'canned soup, magazines,

insert into Xdirect (filename, filetype)
values ("subdir1", "DIR")

delete

delete from Xdirect
where filename = "dir2/dir3/farm_supplies"

update

update Xdirect
set filename = 'just_cupcakes'
where filename = 'dir2/dir3/baked_goods'

writetext

declare @value varbinary(16)
select @value = textptr(content) from Xdirect
where filename = "batteries"
writetext Xdirect.content @value "solar calculators"

readtext

select content from Xdirect
where filename = "batteries"

declare @val varbinary(16)
select @val = textptr(content) from Xdirect
where filename = "batteries"
 readtext Xdirect.content @val 1 5 using chars

五、结束语

本文对扩展文件访问从概念上、操作上做了一些简单的介绍,其中会有不足之处,请大家多多指正。也希望本文对大家有一定的帮助。

标签: 
作者 hobbylu 评论() | 人气()  | 引用() | 推荐 | 保存日志 | 问题日志 | 收藏到网摘 | 返回首页
  powered by blogcn.com