3

现在我正在处理外部表......虽然我喜欢它的灵活性。我想知道关于外部表的这些事情 -

  1. 就像在 SQL Loader 中一样,我们可以将数据附加到表中。我们可以在外部表中这样做吗?

  2. 在外部表中,我们不能创建索引,也不能执行 DML 操作。是这种虚拟表还是在数据库中获取空间?

  3. 同样在 SQL 加载器中,我们可以从定义默认目录的外部表中的任何服务器访问数据。我们可以反过来在从任何服务器访问数据的外部表中做同样的事情吗?

4

1 回答 1

3

外部表允许 Oracle 查询存储在数据库外部的平面文件中的数据,就好像该文件是 Oracle 表一样。

ORACLE_LOADER 驱动程序可用于访问以 SQL*Loader 可以加载的任何格式存储的任何数据。不能对外部表执行 DML,但它们可以用于查询、连接和排序操作。可以针对外部表创建视图和同义词。它们在数据仓库的 ETL 过程中很有用,因为数据不需要暂存并且可以并行查询。它们不应该用于经常查询的表。

您问:

  1. 就像在 SQL Loader 中一样,我们可以将数据附加到表中。我们可以在外部表中这样做吗?

是的。

  1. 在外部表中,我们不能创建索引,也不能执行 DML 操作。是这种虚拟表还是在数据库中获取空间?

顾名思义,它在数据库之外。你使用ORGANIZATION EXTERNAL语法。该目录是在操作系统级别创建的。

  1. 同样在 SQL 加载器中,我们可以从定义 DEfault 目录的外部表中的任何服务器访问数据。我们可以反过来在从任何服务器访问数据的外部表中做同样的事情吗?

这是错误的。SQL*Loader客户端工具,而外部表服务器端工具。外部表可以加载可从数据库服务器访问的文件。您无法从客户端上的文件加载外部表。您需要将文件保存到 Oracle 服务器可用的文件系统中。

在 10g 版本之前,外部表是READ ONLY. 无法执行DML 。从版本 Oracle 数据库 10g 开始,可以写入和读取外部表。

从文档中,还可以阅读SQL*Loader 和外部表之间的行为差​​异

于 2015-12-10T08:17:29.727 回答