我有一个非常简单的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权限,但我仍然遇到此错误。有谁知道如何解决这个问题?
答案 0 :(得分:2)
Oracle允许对外部表中的数据进行只读访问,这意味着不可能进行DML操作(UPDATE,INSERT或DELETE)。
但是,您可以使用CTAS创建新表并在新创建的表中执行DML。
<强>参考文献:强>
答案 1 :(得分:1)
您可以编写(或创建)DATAPUMP格式的外部表。您无法以ORACLE_LOADER格式创建外部表。您无法对这两种格式执行DML。