Sql 尝试创建外部表时出错
我有点SQL初学者,我正在尝试创建一个外部表。以下是我的SQL:Sql 尝试创建外部表时出错,sql,oracle,external-tables,Sql,Oracle,External Tables,我有点SQL初学者,我正在尝试创建一个外部表。以下是我的SQL: CREATE TABLE BACKEND.EXT_DATA_LOAD ( CUST_SESSIONID VARCHAR2(255 BYTE), CUST_SESSION_DATE DATE, CUST_ID VARCHAR2(10 BYTE), CUST_FAV_NUMBER NUMBER ) ORGANIZATION E
CREATE TABLE BACKEND.EXT_DATA_LOAD
(
CUST_SESSIONID VARCHAR2(255 BYTE),
CUST_SESSION_DATE DATE,
CUST_ID VARCHAR2(10 BYTE),
CUST_FAV_NUMBER NUMBER
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY INCOMING_DIR
ACCESS PARAMETERS
( RECORDS DELIMITED BY NEWLINE
BADFILE 'custData.bad'
NODISCARDFILE
LOGFILE 'custData.log'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"' AND '"'
MISSING FIELD VALUES ARE NULL
REJECT ROWS WITH ALL NULL FIELDS
(
CUST_SESSIONID char,
CUST_SESSION_DATE char date_format DATE MASK 'dd/mm/yyyy',
CUST_ID char,
CUST_FAV_NUMBER char
) )
LOCATION (INCOMING_DIR:'custData.csv')
)
REJECT LIMIT Unlimited
NOPARALLEL
MONITORING;
ALTER TABLE BACKEND.EXT_DATA_LOAD
ADD PRIMARY KEY
(CUST_SESSIONID)
ENABLE VALIDATE;
我想可能有一个问题,将CUST_FAV_编号作为顶部的数字,但在访问参数中使用char,但我发现的每个示例都以相同的方式设置。当我试着运行它时,它说它在第3行失败,并出现了错误
ORA-30657:外部组织表上不支持操作
我看不出我所拥有的有什么问题,我缺少什么?我认为最初的问题是监控问题:在外部表上设置统计信息有一些技巧,但我认为默认的监控行为不起作用 “我不明白为什么” 监视是Oracle运行的后台过程,用于跟踪表中的更改(插入、更新、删除),以便评估收集的统计数据的陈旧性。当有足够的变化时,我们可以刷新统计数据。Oracle无法对外部表进行跟踪,因为数据位于操作系统文件中。它可以看出整个文件已经更改,但仅此而已
删除
monitoring
子句后,您将发现我们无法在外部表上设置主键约束,因为主键需要notnull
check约束。显然,数据库无法强制执行这样的检查约束,因为数据位于操作系统上的文件中,而不是实际数据库中。通过重写操作系统文件,可以随时替换外部文件中的数据
出于完全相同的原因,不可能在外部表上构建索引(这也是添加主键失败的另一个原因)。我明白您的意思,这是有道理的,但是当我尝试只运行create部分(不包括ALTER语句)时,它仍然无法运行,并且它会给我与以前相同的错误。一定还有另一个问题。请在没有执行该操作的
监控
条款的情况下进行尝试。我不明白为什么?