外部表访问外部源中的数据,就好像这些数据在数据库中的表中一样。

数据可以是为其提供访问驱动程序的任何格式。您可以使用 SQL(串行或并行)、PL/SQL 和 Java 来查询外部表。

外部表的目的

当 Oracle 数据库应用程序必须访问非关系数据时,外部表很有用。

例如,基于 SQL 的应用程序可能需要访问其记录格式如下的文本文件:

100,Steven,King,SKING,515.123.4567,17-JUN-03,AD_PRES,31944,150,90
101,Neena,Kochhar,NKOCHHAR,515.123.4568,21-SEP-05,AD_VP,17000,100,90 
102,Lex,De Haan,LDEHAAN,515.123.4569,13-JAN-01,AD_VP,17000,100,90

您可以创建一个外部表,将文本文件复制到外部表定义中指定的位置,然后使用 SQL 查询文本文件中的记录。同样,您可以使用外部表来授予对 JSON 文档或 LOB 的只读访问权限。

外部表访问驱动程序

访问驱动程序是解释数据库外部数据的 API 。访问驱动程序在数据库内部运行,它使用驱动程序读取外部表中的数据。访问驱动程序和外部表层负责对数据文件中的数据执行所需的转换,以使其与外部表定义相匹配。

外部表mysql可以查到吗 sql 外部表_外部表mysql可以查到吗

 

racle 为外部表提供以下访问驱动程序:

  • ORACLE_LOADER(默认)
    允许使用 SQL*Loader 支持的大多数格式访问外部文件。您不能使用 ORACLE_LOADER驱动程序创建、更新或附加到外部文件。
  • ORACLE_DATAPUMP使您能够卸载或加载外部数据。卸载操作从数据库中读取数据并将数据插入到由一个或多个外部文件表示的外部表中。创建外部文件后,数据库无法对其进行更新或附加数据。加载操作读取外部表并将其数据加载到数据库中。
  • ORACLE_HDFS支持提取存储在 Hadoop 分布式文件系统 (HDFS) 中的数据。
  • ORACLE_HIVE允许访问存储在 Apache Hive 数据库中的数据。源数据可以存储在 HDFS、HBase、Cassandra 或其他系统中。与其他访问驱动程序不同,您无法指定位置,因为ORACLE_HIVE从外部元数据存储中获取位置信息。
  • ORACLE_BIGDATA允许对以结构化和非结构化格式存储的数据进行只读访问,包括 Apache Parquet、Apache Avro、Apache ORC 和文本格式。您还可以使用此驱动程序查询本地数据,这对于测试和较小的数据集很有用。

外部表创建

在内部,创建外部表意味着在数据字典中创建元数据。与普通表不同,外部表不描述存储在数据库中的数据,也不描述数据在外部是如何存储的。相反,外部表元数据描述了外部表层必须如何将数据呈现给数据库。

声明有CREATE TABLE ... ORGANIZATION EXTERNAL两个部分。外部表定义描述了列类型。这个定义就像一个视图,可以让 SQL 查询外部数据,而无需将其加载到数据库中。语句的第二部分将外部数据映射到列。

CREATE TABLE AS SELECT除非使用ORACLE_DATAPUMP访问驱动程序创建,否则外部表是只读的。外部表的限制包括不支持索引列和列对象。