SQL加载器将数据加载到表的特定列中

时间:2013-09-06 19:32:16

标签: sql import sql-loader

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

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

1 个答案:

答案 0 :(得分:3)

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

推荐阅读: SQL*Loader Control File Reference

  

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

摘自第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是该字段的数据类型。请参阅指定数据字段和数字外部的数据类型。

     

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

     

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

     

3 TERMINATED BY WHITESPACE子句是可以为字段指定的分隔符之一。请参见TERMINATED Fields。

     

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