用友软件首页

使用Oracle外部表的五个限制

2017-3-28 0:0:0 用友T1小编

使用Oracle外部表的五个限制

使用Oracle外部表的五个限制

  Oracle外部表就好像是一张视图,在数据库中可以像试图一样进行查询等操作。这个试图允许用户在外部数据上运行任何的SQL语句,而不需要先将外部表中的数据装载进数据库中。

  外部表是指不在数据库中的表,如操作系统上的一个按一定格式分割的文本文件或者其他类型的表。这个外部表对于Oracle数据库来说,就好像是一张视图,在数据库中可以像试图一样进行查询等操作。这个试图允许用户在外部数据上运行任何的SQL语句,而不需要先将外部表中的数据装载进数据库中。不过需要注意是,外部数据表都是只读的,不能够更改。不过在使用外部表时仍然有不少的限制。

  限制一:需要先建立目录对象。

  在使用外部数据表的时候,需要先建立目录对象。也就是说,要想Oracle数据库系统访问操作系统文件,就必须在数据库中建立指向这个操作系统文件的目录对象,然后通过这个目录对象访问相应的操作系统文件,即用目录对象存储操作文件的保存位置。不过需要注意,这个目录对象普通用户是无权创建的。一般情况下只有特权用户或者数据库管理员角色才可以创建目录对象。如果允许其他用户也可以创建目录对象的话,就需要授权给其他用户。

  其实这个目录对象就是操作系统中文件或者表格的存储位置。不过在建立对象的时候,需要小心,Oracle数据库系统不会去确认这个目录是否真的存在。如果在输入这个目录对象的时候,不小心把路径写错了,那可能这个外部表仍然可以正常建立,但是却无法查询到数据。由于建立目录对象时,缺乏这种自我检查的机制,为此在将路径赋予给这个目录对象时,需要特别的注意。另外需要注意的是路径的大小写。在Windows操作系统中,其路径是不区分大小写的。而在Linux操作系统,这个路径需要区分大小写。故在不同的操作系统中,建立目录对象时需要注意这个大小写的差异。最好数据库管理员可以养成一个习惯,无论在什么操作系统中,都采用小写的目录名与文件名。那么在不同的操作系统中,就不用受到这个大小写的困扰了。最后需要注意的是,目录对象名必须唯一。如果目录对象名字有重复的话,系统会提示错误信息:“名称已有现有对象引用”,而不会自动覆盖原有的对象名设置。

  虽然这个对象名设置比较简单,但是其是数据库寻找操作系统上文件的唯一途径。所以这个目录对象的创建必须确保准确。否则的话,外部表就可能无法正常使用。

  限制二:对于操作系统文件的限制。

  其实外部表简单的说,就是跟操作系统上固定格式的文件或者表格的一个连接。为了Oracle数据库系统能够正确链接外部表,对于外部表的格式就提出了比较严格的要求。如果不符合这些要求的话,数据库系统就无法正确读取外部表中的数据。如对于分隔符有比较严格的要求。虽然在外部文件或者表格中,可以使用多种分隔符,如英文状态下的逗号或者分号等等。但是有一个限制,即在同一个操作系统文件中只能够使用一个分割符号,要么逗号或者分号等等。因为在建立外部表时,必须指定操作系统文件所使用的分隔符号。如果有多种分隔符号的话,数据库系统将无法识别。

  另外在外部表格中,不能够带有标题信息。如现在有一张表格,以逗号分隔。而在其第一列数据中有各个列的标题信息。而数据库系统在连接这个表的时候,会将这些标题信息当作普通的纪录来对待。即会将这些信息也显示在外部表中。为此如果这个标题信息与外部表的字段类型不一致(如字段内容是number数据类型,而标题信息则是字符型数据,则在查询时就会出错)。如果数据类型恰巧一致的话,这个标题信息Oracle数据库也会当作普通记录来对待。如在建立外部表的时候,最好确认一下操作系统文件中是否包含标题信息。如果有的话,需要删除。否则的话,可能会出错。

  最后需要说明的是,当Oracle数据库系统访问这个操作系统文件的时候,会在这个文件所在的目录自动创建一个日志文件。无论最后是否访问成功,这个日志文件都会如期建立。查看这个日志文件,可以了解数据库访问外部表的频率、是否成功访问等等。

  限制三:在建立临时表时的限制。

  在建立临时表时,也会有不少的限制。如表中字段的名称有一些特殊字符的话,那么这个表列的名称必须使用英文状态的下的双引号连接起来。如采用”studentno#”。遇到列名字中有特殊符号时,如果不采用双引号括起来,虽然临时表可以正常创建,但是在采用的时候会出现错误,无法正常查询数据。如数据库系统可能会提醒:“数据库插件错误”等信息。为此最好在创建临时表时不要在列名中使用一些特殊的字符。其实不光光是建立临时表有这种限制,建立其他标或者试图都有类似的限制。

  其次,这个外部表毕竟与内部表不同。在创建外部表的时候,其实在数据库中跟本没有创建表。也就是说,不会为外部表分配任何的存储空间。创建外部表只是在数据字典中创建了外部表的元数据,以便对应访问外部表中的数据,而不在数据库中存储外部表的数据。简单地说,数据库存储的只是与外部文件的一种对应关系,如字段与字段的对应关系。而没有存储实际的数据。为此在表的操作与管理上,就会受到很大的限制。如在外部表上,是不能够为表创建索引。因为创建索引就意味着要存在对应的索引记录。而外部表其实在数据库不会有存储。故在外部中是无法建立索引的。如果硬要建立的话,则系统会提示“操作在外部组织表上不受支持”的错误提示。同样的道理,在数据库中也不能够更新外部表中的数据,如插入记录、删除记录或者更新信息等等。简而言之,这个外部表对于数据库来说,是只读的,不可更新。

  限制四:删除外部表或者目录对象。

  当外部表不用时,需要及时删除外部表或者与之对应的目录对象。不过在删除这些内容时会有一些限制。这些限制主要是管理上的限制,而不是技术上的限制。也就是说,Oracle数据库系统没有对其进行强制的限制。但是如果数据库管理员不遵守这些限制的话,可能会出现一些问题。如要先删除外部表,然后再删除目录对象。有时候一个目录对象中可能会包含多个外部表。此时必须要确认所有的外部表都不用了,都已经删除干净了,然后才能够删除目录对象。在创建外部表时,操作系统会判断一下,与之对应的目录对象是否已经创建。但是在删除对象时,系统不会去判断跟这个目录对象关联的外部表是否已经全部删除。如果目录对象删除了,但是还有外部表存在。此时查询这个外部表的时候,系统就会提示“对象不存在”的错误信息。所以这个删除目录对象时,数据库系统缺乏一种检查,此时只有数据库管理员在删除目录对象时,先手工确认一下这个目录对象是否存在其他的外部表。

  要了解这个信息,则可以通过查询dba_external_locations。通过查询这张表,系统会反映当前所有的目录对象以及相关的外部表,还会查询出这些外部表所对应的操作系统文件的名字。先查询这张表格,确定要删除的对象没有其他关联的外部表时,再进行删除。否则的话,需要先确认其他外部表的可用性。免得因为误删除而导致外部表无法正常使用。

  限制五:对于操作系统平台的限制。

  虽然Oracle数据库是支持跨平台的数据库系统,即同时支持Windows或者Linux等多种操作系统。但是在使用外部表的时候需要注意一个问题,即在两个操作系统上文本文件的存储方式是不同的。如在Windows操作系统上利用txt文件建立了一个以逗号作为分隔符的文件,其一行一条记录。但是在Linux操作系统上打开的话,在其就可能使在同一行中显示了。故为了数据库系统能够正确识别操作系统文件,最好这个操作系统文件能够和Oracle数据库系统部署在同一台服务器上或者同一种操作系统上。否则的话,很可能因为格式的冲突,而导致数据库系统无法正确读取外部文件中的数据。

如果您的问题还没有解决,可以到 T+搜索>>上找一下答案

分享到:

微博关注

bj用友软件

最新信息

应收制单时科目不对

应收制单时科目不对 应收制单时科目不对

U8知识库
问题号:7160
解决状态:临时解决方案
软件版本:8.52
软件模块:应付
行业:通用
关键字:应收/应付制单时科目无法显示
适用产品:8.21
问题名称:应收制单时科目不对
问题现象:应收制单时科目不对
问题原因:用户控制科目依据客户分类,然后用户又经常修改导致控制科目中无对应科目
解决方案:控制科目依据改成地区分类
补丁编号:
录入日期:2016-03-16 15:23:45
最后更新时间:

#一碗鸡汤#-有些人出现在你的生命里就是为了告诉你,你真好骗。——纪念我逝去的菜钱-假如生活欺骗了你,不要悲伤,不要绝望,因为明天,后天,大后天,生活还会继续欺骗你。——天气预报也总骗我

#一碗鸡汤#-有些人出现在你的生命里就是为了告诉你,你真好骗。——纪念我逝去的菜钱-假如生活欺骗了你,不要悲伤,不要绝望,因为明天,后天,大后天,生活还会继续欺骗你。——天气预报也总骗我 #一碗鸡汤#有些人出现在你的生命里就是为了告诉你,你真好骗。——纪念我逝去的菜钱假如生活欺骗了你,不要悲伤,不要绝望,因为明天,后天,大后天,生活还会继续欺骗你。——天气预报也总骗我[]

[/强]
政委猝不及防的鸡汤啊
[/微笑]

使用技巧

  • 经常出现账套年度演示期限已到期,怎么办?

    经常出现账套年度演示期限已到期,怎么办?

         最近经常有用户在使用用友财务管理软件的时候提示“演示期限已到期”,如下图。特别是T3用户,T+、T6和U8用户也会出现类似问题。越是报税期越出现的频繁,越是着急越是出问题,出现这种问题, 不能做账填制会计凭证了,也出不了财务报表,很多会计都非常的着急。该怎么办呢?别着急啦,本文会详细讲解决方案。全心全意为用户排忧解难是用友天龙瑞德公司的服务宗旨。

     image


  • 麻烦问下,T3升级T6,是不是要先安装6.1,用工具升级,再导出帐套,安装6.5,再升级到6.5?

    麻烦问下,T3升级T6,是不是要先安装6.1,用工具升级,再导出帐套,安装6.5,再升级到6.5?

    麻烦问下,T3升级T6,是不是要先安装6.1,用工具升级,再导出帐套,安装6.5,再升级到6.5? 麻烦问下,T3升级T6,是不是要先安装6.1,用工具升级,再导出帐套,安装6.5,再升级到6.5?[]

    [/强]
    您好!您理解的是对的,要在T6 6.1环境下使用T3升级T6的工具,升级完成后,恢复到6.1环境,备份出6.1的数据,安装6.5,再升级到6.5

知 识 库

  • 这两个单据上的成本价怎么不一样 一张是销货单 一张是销售出库单 是同一批货物 销售出库单上单成本价是正确的 销货单上单不对

    这两个单据上的成本价怎么不一样 一张是销货单 一张是销售出库单 是同一批货物 销售出库单上单成本价是正确的 销货单上单不对

    这两个单据上的成本价怎么不一样 一张是销货单 一张是销售出库单 是同一批货物 销售出库单上单成本价是正确的 销货单上单不对 这两个单据上的成本价怎么不一样 一张是销货单 一张是销售出库单 是同一批货物 销售出库单上单成本价是正确的 销货单上单不对

    我怎么看到的都是一样的是583.03叻。
    [/尴尬]
    根据图2上显示的来源单据号和图1的单据编号核对,出库单不是由这张销货单生成的

  • 这个应该怎么办,最好有操作流程

    这个应该怎么办,最好有操作流程

    这个应该怎么办,最好有操作流程 这个应该怎么办,最好有操作流程

    在服务社区-更多,工具下载中下载:数据库Sa口令清除及T3注册组件工具:
    http://service.chanjet.com/main/supportgongju清除sa密码,然后再登录,不行的话,请参考服务社区-知识库中的文档进行处理:
    http://service.chanjet.com/zhi ... b45b0

  • 最新文章排行
  • 热门文章排行

培训教程

  • 还没开票的做到预收科目,那成本可以先做进去吗?

    还没开票的做到预收科目,那成本可以先做进去吗?

    还没开票的做到预收科目,那成本可以先做进去吗? 还没开票的做到预收科目,那成本可以先做进去吗?[]

    有收入才能结转成本的
    那成本挂哪个科目啊?
    其他应收款吗?
    @若只如初见520:要是销售的产品的话,产品本来做在库存里啊,要是人工施工的话,做在工程施工里,等有了收入在结转成本的
    成本与收入相对应,确认收入才能结转成本
    我们是人力资源公司,签了一份人事代理协议,代缴五险一金。之前收到他们的钱做了预收账款,还没给开票,现在给他们缴纳了五险一金,这些费用是入到成本吗?
    @若只如初见520:代付代缴应该走其他应收款/其他应付款
    @口袋的天空焕:那我做到其他应收款,等到开票了,有收入后,把预收的转入主营业务收入,其他应收款转入主营业务成本,,这样对吗
    @若只如初见520:代缴的五险一金你们也给开票么?
    @口袋的天空焕:开在一张发票上面,昨天还一直纠结这个问题,受累帮忙看看
    代缴的五险一金你们不是已经说到客户的款项了么,那个不应该作为你们的成本吧?
    @口袋的天空焕:我现在也纠结是做成本还是其他应收款冲了,税务局说这张发票的开票金额都要入营业额,那我支出的是不是成本
    @若只如初见520:。。。那要是代缴的五险一金都算是收入的话,那你们为客户缴纳五险一金的时候也走的是管理费用啊

  • 进入总账提示所选行业性质与科目不相符,去检查表提示数据库严重损坏,修复数据提示成功,再去检测又是严重错误

    进入总账提示所选行业性质与科目不相符,去检查表提示数据库严重损坏,修复数据提示成功,再去检测又是严重错误

    进入总账提示所选行业性质与科目不相符,去检查表提示数据库严重损坏,修复数据提示成功,再去检测又是严重错误 进入总账提示所选行业性质与科目不相符,去检查表提示数据库严重损坏,修复数据提示成功,再去检测又是严重错误[]

    反复执行修复工具,直到修复到没有错误为止。建议备份好之前数据,损坏严重的情况下,也有可能修复不好,无限报错。
    use ufdata_071_2015
    select * from code执行这语句时报上述错误
    @廖深根:构架损坏可能很难修复。尝试使用工具下载中的数据库修复工具,进行修复。
    然后还有个账套也是提示所选行业性质与科目不相符,经检查无误,但是进入账套还是提示不符
    @廖深根:根据您的描述,一致性错误导致的行业性质与科目不相符,您先修复成功,再来解决这个问题吧。
    修复数据库?
    @廖深根:请参考之前给您的回复。尝试使用工具下载中的数据库修复工具,进行修复。但是结构错误很难修复,工具只能修正一些简单错误。不保证工具一定管用。如果持续报错,建议您寻求专业的数据修复公司尝试修复。
    @服务社区窦佳:工具使用前,请注意备份账套。

关于我们 | 公司动态 | 获奖记录 | 联系我们 | 招聘信息 | 用友产品中心 | 用友云基地
Copyright ©  www.kuaiji66.com  All Rights Reserved 天龙瑞德
京ICP备11046295号-1 技术支持 北京天龙瑞德信息技术有限责任公司   北京海淀上地十街辉煌国际大厦3号楼6层 总机:010-59798025   售后:4009908488
北京天龙瑞德信息技术有限责任公司