无法写入Oracle外部表

时间:2017-01-28 01:14:38

标签: oracle plsql oracle11g

我有一个非常简单的Oracle外部表定义,我可以从中选择数据:

CREATE TABLE brianl.billdata_daily2
(
    account   VARCHAR2 (30)
)
ORGANIZATION EXTERNAL
    (TYPE oracle_loader
          DEFAULT DIRECTORY cifs_dir
          LOCATION ('mymeter_daily_bills.csv'));

我将一些示例行放入其中,并且能够使用以下命令成功检索它们:

SELECT *
  FROM brianl.billdata_daily2;

不幸的是,当我尝试写信给他们时,我收到了一个错误:

INSERT INTO brianl.billdata_daily2 (account)
    SELECT ('A')
      FROM DUAL;
  

ORA-30657:外部有组织的表格不支持该操作

我在cifs_dir目录上有读,写,执行权限,为了论证,我为文件系统目录添加了Oracle java文件I / O权限,但我仍然遇到此错误。有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

Oracle允许对外部表中的数据进行只读访问,这意味着不可能进行DML操作(UPDATE,INSERT或DELETE)。

但是,您可以使用CTAS创建新表并在新创建的表中执行DML。

<强>参考文献:

  • External Table
  • Using External Tables to Load and Unload Data

  • 答案 1 :(得分:1)

    您可以编写(或创建)DATAPUMP格式的外部表。您无法以ORACLE_LOADER格式创建外部表。您无法对这两种格式执行DML。