【问题标题】:Oracle SQL Loader: FILLER Field in data file exceeds maximum lengthOracle SQL Loader:数据文件中的 FILLER 字段超过最大长度
【发布时间】:2020-04-19 13:44:58
【问题描述】:

我需要通过 SQL 加载器将大​​量数据加载到 Oracle 数据库。

操作系统:RHEL

甲骨文:12c

这是我的控制文件:

OPTIONS(SKIP=1)
LOAD DATA
CHARACTERSET UTF8
INFILE 'temp.dat' "STR '\",\"'"
BADFILE 'bad.dat'
TRUNCATE
INTO TABLE MY_TABLE
FIELDS TERMINATED BY ";"
(
PERSONNEL_NO    CHAR,
emp_name_f_r    FILLER,
LAST_NAME_RUS   CHAR,
FIRST_NAME_RUS  CHAR,
MIDDLE_NAME_RUS CHAR,
LAST_NAME_ENG   CHAR,
FIRST_NAME_ENG  CHAR,
emp_name_s_r    FILLER,
EMAIL   CHAR,
POSITION_NO CHAR,
POSITION_RUS    CHAR(300000),
emp_posname_s_r FILLER,
emp_orgid   FILLER,
emp_orgname_r   FILLER,
emp_orgref_r    FILLER,
emp_dirname_r   FILLER,
emp_pos_path_r  FILLER,
emp_org_path_r  FILLER,
ALIAS   CHAR,
emp_name_f_e    FILLER,
emp_name_s_e    FILLER,
POSITION_ENG    CHAR(300000)
)

我在 LOG 中有很多这样的错误:

记录 9:被拒绝 - 表 MY_TABLE 列上的错误 EMP_POS_PATH_R。数据文件中的字段超过最大长度

正如您在控制文件中看到的emp_pos_path_rFILLER。所以我不需要把它加载到桌子上。我承认数据文件中这个字段可能有很长的数据。

我应该如何更改控制文件以将数据加载到数据库中?

【问题讨论】:

    标签: oracle sql-loader


    【解决方案1】:

    Oracle 11gR2

    我通过在 FILLER 关键字后添加 CHAR(4000) 解决了这个问题。您可以根据字符串的长度更改大小。

    【讨论】:

      【解决方案2】:

      char(和填充符)的默认最大长度为 255,因此如果您的填充符字段之一可以超过此长度,请在填充符关键字之前添加 char(...)。 '...' 是您拥有的最大值。

      【讨论】:

      • char(xxx) 应该 AFTER 填充关键字
      猜你喜欢
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      相关资源
      最近更新 更多