SQL*Loader控制文件几列为空白

SQL*Loader control file few columns are blank

我的文件名 .dat 文件包含以下格式的 1000 条记录。

SIC_ID|NAME|CHANGED_DATE|LOGICALLY_DELETED
110|Wheat|31/10/2010 29:46:00|N

Table 我想在其中提供内容的列数很少。我希望将这些列留空,因为 .dat 文件中没有内容。 Table 列:

SIC_ID, NAME, CREATED_USER_ID ,CREATED_DATE ,CHANGED_USER_ID ,CHANGED_DATE,LOGICALLY_DELETED,RECORD_VERSION

我的控制文件如下:-

    OPTIONS (DIRECT=TRUE,SKIP=1)
    LOAD DATA CHARACTERSET WE8MSWIN1252
    INFILE "mic_file.dat"
    BADFILE "sql/mic_file.bad"
    REPLACE
    INTO TABLE SDS_SIC
    FIELDS TERMINATED BY "|"
    TRAILING NULLCOLS
    (SIC_ID, NAME,
DATE "DD/MM/YYYY HH24:MI:SS" NULLIF (CHANGED_DATE=BLANKS),
LOGICALLY_DELETED)

在 运行 SQL*Loader 之后,我看到以下错误:

   Column Name                  Position   Len  Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
SIC_ID                              FIRST     *   |       CHARACTER
NAME                                 NEXT     *   |       CHARACTER
CHANGED_DATE                         NEXT     *   |       CHARACTER
LOGICALLY_DELETED                    NEXT     *   |       CHARACTER

Record 1: Rejected - Error on table SDS_SIC, column CHANGED_DATE.
ORA-26041: DATETIME/INTERVAL datatype conversion error

多次抛出最后两行错误。现在已修复 :)

错误 2:LOGICALLY_DELETED 只有 2 个可能的值 - Y 或 N。

Record 51: Rejected - Error on table SDS_SIC, column LOGICALLY_DELETED.
ORA-12899: value too large for column LOGICALLY_DELETED (actual: 2, maximum: 1)

多次显示以上错误。

您可以转到 MySQL 命令行客户端并将值插入到所需的列中,您应该执行以下操作: 就像您想将值插入

SIC_ID|NAME|CHANGED_DATE|LOGICALLY_ DELETED

而且不在那些额外的列中。您应该输入:

insert into 'whatever the table name is'(SIC_ID,NAME,CHANGED_DATE,LOGICALLY_DELETED)
values(112,'wheat','31/10/2010 19:46:00',N);

仅在您使用 属性 列的 varchar 的地方使用单引号 试一试......它会工作

请记住,控制文件列列表位于数据文件中的订单字段中。数据按名称与 table 列匹配。您的控制文件将第 3 和第 4 个字段映射到 FILLER,这就是它们为空的原因。 FILLER 仅适用于您不需要的数据文件中的字段。

您只需要在您的列列表部分中使用类似的内容,TRAILING NULLCOLS 将处理 table:

的其余列
(SIC_ID, 
 NAME, 
 CHANGED_DATE  DATE "DD/MM/YYYY HH24:MI:SS" NULLIF (CHANGED_DATE=BLANKS),
 LOGICALLY_DELETED
)

看到最近的这个post正好举例说明关系: