【发布时间】:2023-04-05 04:26:02
【问题描述】:
在将 FIXED 参数与外部表一起使用时,我收到 “文件末尾的部分记录” 错误。
我正在使用 SQL Developer,Oracle 11g XE。
-------
foo.dat - Field lengths: fname=7;lname=8;year=4
-------
Alvin Tolliver1976
KennethBaer 1963
Mary Dube 1973
这是表的 DDL:
CREATE TABLE emp_load (
first_name CHAR(7)
, last_name CHAR(8)
, year_of_birth CHAR(4)
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY ext_tab_dir
ACCESS PARAMETERS (
RECORDS FIXED 20 FIELDS (
first_name CHAR(7)
, last_name CHAR(8)
, year_of_birth CHAR(4)
)
)
LOCATION ('foo.dat'));
正在创建表 emp_load,但 select 语句失败并显示以下错误消息。
执行select * from emp_load 时的错误消息:
ORA-29913: error in executing ODCIEXTTABLEFETCH callout
ORA-29400: data cartridge error
KUP-04018: <b>partial record at end of file C:\oracle\foo.dat</b>
29913. 00000 - "error in executing %s callout"
*Cause: The execution of the specified callout caused an error.
*Action: Examine the error messages take appropriate action.
唯一有效的时候是我做了 foo.dat 1 行(如下所示)并将 FIXED 长度更改为 19-
Alvin Tolliver1976KennethBaer 1963Mary Dube 1973
这似乎表明我在换行符方面做错了,但我不知道是什么。
任何帮助将不胜感激。提前致谢!
【问题讨论】:
-
我认为你需要
DELIMITED BY NEWLINE: download.oracle.com/docs/cd/B19306_01/server.102/b14215/… -
@ypercude:恐怕你弄错了。从您链接的规范中:FIXED 子句用于将记录标识为所有具有固定长度字节大小的记录。为 FIXED 记录指定的大小必须包含任何记录终止字符,例如换行符。 我认为 OP 的 DDL 是正确的。
标签: database oracle plsql oracle11g external-tables