1

最近开始研究 SQL Loader,享受它的工作方式。我们遇到了一个问题,我们必须以 csv 格式加载所有列(例如 excel 中的 10 列),但目标表包含大约 15 个字段。当您希望跳过源文件中的列但不确定在此处做什么时,填充符起作用。使用临时表有帮助,但还有其他选择吗?

非常感谢任何帮助。谢谢。

4

1 回答 1

3

您必须在控制文件中指定列

推荐阅读: SQL*Loader 控制文件参考

10 控制文件的其余部分包含字段列表,它提供有关正在加载的表中的列格式的信息。有关控制文件该部分的信息,请参见第 6 章。

第六章节选:

示例 6-1 示例控制文件的字段列表部分

1  (hiredate  SYSDATE,
2     deptno  POSITION(1:2)  INTEGER EXTERNAL(2)
              NULLIF deptno=BLANKS,
3       job   POSITION(7:14)  CHAR  TERMINATED BY WHITESPACE
              NULLIF job=BLANKS  "UPPER(:job)",
       mgr    POSITION(28:31) INTEGER EXTERNAL 
              TERMINATED BY WHITESPACE, NULLIF mgr=BLANKS,
       ename  POSITION(34:41) CHAR 
              TERMINATED BY WHITESPACE  "UPPER(:ename)",
       empno  POSITION(45) INTEGER EXTERNAL 
              TERMINATED BY WHITESPACE,
       sal    POSITION(51) CHAR  TERMINATED BY WHITESPACE
              "TO_NUMBER(:sal,'$99,999.99')",
4      comm   INTEGER EXTERNAL  ENCLOSED BY '(' AND '%'
              ":comm * 100"
    )

在此示例控制文件中,出现在左侧的数字不会出现在实际控制文件中。它们在此示例中被键入到以下列表中的解释性说明中:

1 SYSDATE 将该列设置为当前系统日期。请参阅将列设置为当前日期。

2 POSITION 指定数据字段的位置。请参阅指定数据字段的位置。

INTEGER EXTERNAL 是字段的数据类型。请参阅指定数据字段的数据类型和数值 EXTERNAL。

NULLIF 子句是可用于指定字段条件的子句之一。请参阅使用 WHEN、NULLIF 和 DEFAULTIF 子句。

在此示例中,使用 BLANKS 参数将该字段与空白进行比较。请参阅将字段与空白进行比较。

3 TERMINATED BY WHITESPACE 子句是可以为字段指定的分隔符之一。请参阅已终止的字段。

4 ENCLOSED BY 子句是另一种可能的字段分隔符。请参阅封闭字段。

于 2013-09-06T19:37:11.797 回答