SQL Loader使用单个Control文件将数据加载到多个表中

时间:2018-04-10 20:07:50

标签: sql-loader

我有Amount Column的文件。但是列中的某些行包含字符。我想在一个表中加载正确的金额列,在另一个表中加载不正确的金额列。

我使用以下格式将正确数量的列提取到表1中。

to_number(:amt/100)

进入表2我没有指定任何格式,我直接将其称为CHAR。

但是这两个表都是使用正确的金额值生成的。 (表1和表2都使用格式to_number(:amt/100)

INTO TABLE Tbl1
WHEN (01) <> 'TRAILER'
TRAILING NULLCOLS
(
 amt                      POSITION(1:12)              char(12)
)


INTO TABLE tbl2
WHEN (01) <> 'TRAILER'
TRAILING NULLCOLS

(
 amt                      POSITION(1:12)            "to_number(:amt/100)",
)

2 个答案:

答案 0 :(得分:0)

您必须根据金额值条件区分表格。因此,您的WHEN条件应该与WHEN (01) <> 'TRAILER' AND (1:12) = 'SOME_CONDITION'相似。

在您的情况下,我不知道是否有一种方法可以根据其格式调整列值,例如REGEXP_LIKE,IS_NUMERIC,用于SQL * Loader。你应该寻找这些类型的解决方法。

答案 1 :(得分:0)

您可能最好加载到一个临时表中,其中列是varchar2,因此所有行都将加载,然后使用PL / SQL程序从那里进行处理。

如果您向我们展示了该列中的实际数据,也许还有一种方法可以解决这个问题。