最近开始研究 SQL Loader,享受它的工作方式。我们遇到了一个问题,我们必须以 csv 格式加载所有列(例如 excel 中的 10 列),但目标表包含大约 15 个字段。当您希望跳过源文件中的列但不确定在此处做什么时,填充符起作用。使用临时表有帮助,但还有其他选择吗?
非常感谢任何帮助。谢谢。
最近开始研究 SQL Loader,享受它的工作方式。我们遇到了一个问题,我们必须以 csv 格式加载所有列(例如 excel 中的 10 列),但目标表包含大约 15 个字段。当您希望跳过源文件中的列但不确定在此处做什么时,填充符起作用。使用临时表有帮助,但还有其他选择吗?
非常感谢任何帮助。谢谢。
您必须在控制文件中指定列
推荐阅读: SQL*Loader 控制文件参考
10 控制文件的其余部分包含字段列表,它提供有关正在加载的表中的列格式的信息。有关控制文件该部分的信息,请参见第 6 章。
第六章节选:
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 子句是另一种可能的字段分隔符。请参阅封闭字段。