oracle 外部表中FILLER关键字抛出错误

问题描述 投票:0回答:1

在使用 SQL 加载器创建外部表来加载数据时,我使用了 Oracle 文档中指定的“FILLER”关键字,如下所示。

由BOUNDFILLER或FILLER指定的填充字段是一个数据文件 映射字段与数据库列不对应。填料 字段从其所在的数据字段中分配值 映射。关于填充字段,请记住以下几点: 语法 填充字段与基于列的字段相同,除了 填充字段名称后跟 FILLER。

这是链接:

https://docs.oracle.com/en/database/oracle/oracle-database/23/sutil/oracle-sql-loader-field-list-contents.html#GUID-EAB9BE96-6F29-4623-9BEF- 323C2FE05CB7

但是从外部表中选择时,我在 FIRST_NAME 列上收到以下错误

KUP-01005: syntax error: found "identifier": expecting one of: "binary_double, binary_float, comma, char, convert_error, date, defaultif, decimal, double, float, integer, (, lls, lls_compat, no, nullif, oracle_date, oracle_number, position, raw, recnum, ), unsigned, varrawc, varchar, varraw, varcharc, zoned"

KUP-01008: the bad identifier was: FILLER

是什么导致了这个问题,或者我使用它的方式错误?但使用 Char 变量工作正常。

这就是我所做的

create table etbl
(EMPLOYEE_ID number,
EMAIL varchar2(200),
SALARY number)
organization external 
(
type oracle_loader
default DIRECTORY dir1
access parameters
(
 records delimited by NEWLINE
 skip 1
 logfile 'log.txt'
 badfile 'emp.bad'
 fields terminated by ','
 optionally ENCLOSED by '"'
 MISSING field values are null
 (
 EMPLOYEE_ID char(200),
 FIRST_NAME FILLER,
 FILLER char(200),
 EMAIL char(200),
 FILLER char(200),
 FILLER char(200),
 FILLER char(200),
 SALARY char(200),
 FILLER char(200),
 FILLER  char(200),
 FILLER char(200)
 )
)
location ('emp.txt')
)
reject limit 10;

select * from etbl;
oracle sql-loader external-tables oracle21c
1个回答
0
投票

对我来说,你似乎被“SQL Loader”误导了words

SQL Loader 是用于从存储在您可以访问的目录/文件夹中的文件加载数据的实用程序;一个很好的功能是它可以是您自己的 PC,不必是数据库服务器。它是通过从操作系统命令提示符调用

sqlldr.exe
来运行的。

外部表是一个不同的功能;它是在 SQL 级别的数据库(模式)中使用

create table ... organization external
语句创建的,遵循适用于 外部表 的语法。它允许您访问存储在目录/文件夹中的文件中的数据 - 通常位于数据库服务器上 - 这也是名为 directory 的 Oracle 对象的
,该对象由
sys
创建,然后授予适当的权限(读和/或写)给将使用它的数据库用户。
type oracle_loader
代表access driver,用于加载数据;那不是 SQL Loader!来自文档

访问驱动程序运行在数据库服务器内部。此行为与 SQL*Loader 不同,SQL*Loader 是一个客户端程序,它将要加载的数据发送到服务器。

最后,这意味着您在 SQL*Loader 实用程序(包括
filler

)中使用的参数与在外部表中使用的参数不同。

    

© www.soinside.com 2019 - 2024. All rights reserved.