执行查询时在服务器端出错

Posted

技术标签:

【中文标题】执行查询时在服务器端出错【英文标题】:Getting error on server side while executing query 【发布时间】:2019-11-27 12:11:50 【问题描述】:

我们有一个具有 ETL 流程的 JAVA 应用程序。当我们执行该 ETL 过程时,zip 文件被解压缩,其中包含许多 csv 文件。使用这个 csv 文件,我们将数据加载到外部表中。将数据加载到外部表时,出现以下错误。

 CREATE TABLE "EXTERNAL_TABLE" 
   (    "column1" VARCHAR2(10 BYTE), 
    "column2" VARCHAR2(40 BYTE), 
    "column3" VARCHAR2(64 BYTE)
   ) 
   ORGANIZATION EXTERNAL 
    ( TYPE ORACLE_LOADER
      DEFAULT DIRECTORY "EXT_DIRECTORY"
      ACCESS PARAMETERS
      ( RECORDS DELIMITED BY '\n'
    BADFILE EXT_DIRECTORY:'test.bad'
    DISCARDFILE EXT_DIRECTORY:'test.dsc'
    SKIP 1
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"' AND '"'
    LRTRIM
    MISSING FIELD VALUES ARE NULL (
    column1 CHAR(4000),    column2 CHAR(4000),    column3 CHAR(4000)    )
      )
      LOCATION
       ( 'test.csv'
       )
    )
   REJECT LIMIT UNLIMITED ;

错误:

Caused by: java.sql.BatchUpdateException: error occurred during batching: ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-04040: file test.csv in TEST_TBL not found at oracle.jdbc.driver.OracleStatement.executeBatch(OracleStatement.java:4615)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:230)

【问题讨论】:

您需要更具体地了解您的问题。你尝试了什么?预期的结果是什么?你能给我们看一些代码吗?请阅读how to ask a good question,然后编辑您的问题以改进它。谢谢! 你一直在做什么?似乎您的 TEST_TBL 无法访问。您是否尝试使用此处描述的外部表:docs.oracle.com/en/database/oracle/oracle-database/12.2/sutil/… 如果您不让我们知道您实际在做什么,这很难提供帮助。 【参考方案1】:

当数据库尝试访问外部表并且在外部表定义中调用的文件不存在或不可访问时,会引发此异常。在这种情况下,它要查找的文件是test.csv,它应该存在于数据库中名称为TEST_TBL 的目录中。您可以尝试编写一个测试程序,看看是否可以使用 UTL_FILE 包打开和读取此文件。

由于缺乏详细信息,很难说本网站上涉及类似问题的任何其他答案是否适用于您的案例,但您可能会查看以下内容:

ORA-29913: error in executing ODCIEXTTABLEOPEN callout

sqlplus error on select from external table: ORA-29913: error in executing ODCIEXTTABLEOPEN callout

Error in executing ODCIEXTTABLEOPEN callout

【讨论】:

以上是关于执行查询时在服务器端出错的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ios 解析服务器端执行 php 脚本?

在 php 中登录服务器端时在 android 中进行会话处理

使用在服务器端获取的 IBM Bluemix 音调分析器令牌时客户端出错

是否可以使用 Apollo Server 在服务器端本地执行突变或查询

尝试从表中运行 select count(*) 查询时在配置单元中出错

如何在后端使用promises时在控制台中测试dialogflow应用程序?