Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 尝试创建外部表时出错_Sql_Oracle_External Tables - Fatal编程技术网

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

我有点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 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语句)时,它仍然无法运行,并且它会给我与以前相同的错误。一定还有另一个问题。请在没有执行该操作的
监控
条款的情况下进行尝试。我不明白为什么?