ORA-30657: operation not supported on external organized table

要更新一个用户信息表的mail字段时,提示ORA-30657错误

SQL> update class_users set email='XXXXXXXXX@qq.com' where id = 73257;
update class_users set email='XXXXXXXXX@qq.com' where id = 73257
       *
ERROR at line 1:
ORA-30657: operation not supported on external organized table


此错误是因为class_users表是一个外部表,不能直接update更新,可以直接更新引用的文本文件里的内容

SQL> select object_name,object_type from user_objects where object_name='CLASS_USERS';

OBJECT_NAME                         OBJECT_TYPE
----------------------------------- -------------------
CLASS_USERS                         TABLE

SQL> select * from tab where tname='CLASS_USERS';
TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
CLASS_USERS                    TABLE

SQL> set long 9999999   
SQL> select dbms_metadata.get_ddl('TABLE','CLASS_USERS') from dual;     

DBMS_METADATA.GET_DDL('TABLE','CLASS_USERS')
--------------------------------------------------------------------------------

  CREATE TABLE "NEWCOURSE"."CLASS_USERS"
   (    "ID" NUMBER(10,0),
        "USER_NAME" VARCHAR2(150),
        "PASSWD" VARCHAR2(32),
        "CHANNEL" VARCHAR2(50),
        "PROPERTIES" NUMBER(19,0),
        "EMAIL" VARCHAR2(250),
        "MOBILE" VARCHAR2(20),
        "EMAIL_VERIFIED" NUMBER(1,0),
        "MOBILE_VERIFIED" NUMBER(1,0),
        "ROLE" NUMBER(1,0)
   )
   ORGANIZATION EXTERNAL
    ( TYPE ORACLE_LOADER
      DEFAULT DIRECTORY "DPDIR"
      ACCESS PARAMETERS
      ( records delimited by newline
          fields terminated by ','
           )
      LOCATION
       ( 'class_users.info'
       )
    )
   REJECT LIMIT UNLIMITED

SQL> select directory_path from dba_directories where directory_name='DPDIR';

DIRECTORY_PATH
------------------------------------------------------------------------------------------------------------------------
/tol/backup/dmp

QL> col email for a35
SQL> select id,email from class_users where id = 73257;

        ID EMAIL
---------- -----------------------------------
     73257


SQL> desc class_users;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(10)
 USER_NAME                                          VARCHAR2(150)
 PASSWD                                             VARCHAR2(32)
 CHANNEL                                            VARCHAR2(50)
 PROPERTIES                                         NUMBER(19)
 EMAIL                                              VARCHAR2(250)
 MOBILE                                             VARCHAR2(20)
 EMAIL_VERIFIED                                     NUMBER(1)
 MOBILE_VERIFIED                                    NUMBER(1)
 ROLE                                               NUMBER(1)
 

+++编辑/tol/backup/dmp 目录下的class_users.info文件,查找到id=73257的记录,改为:
73257,amosquito6,63c4d05e73b829727c1ff47bd4388d00,class,0,345305538@qq.com,,0,0,0

+++再次查询:
SQL> select id,email from class_users where id = 73257;

        ID EMAIL
---------- -----------------------------------
     73257 345305538@qq.com


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值