我定义了一个非常简单的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权限,但我仍然得到这个错误。有人有办法解决这个问题吗?
3条答案
按热度按时间tag5nh1u1#
Oracle允许对外部表中的数据进行只读访问,这意味着不可能进行DML操作(UPDATE、UPDATE或DELETE)。
但是,您可以使用CTAS创建新表,并在新创建的表中执行DML。
参考文献:
1.使用外部表加载和卸载数据
g0czyy6m2#
您可以编写(或创建)DATAPUMP格式的外部表。不能以ORACLE_LOADER格式创建外部表。不能对这两种格式执行DML。
sshcrbum3#
当然是可能的:
在外部表上创建视图:
在该视图上创建一个触发器而不是insert(作为示例),如下所示:
以表格形式插入到视图中: