映射Oracle SQL Loader中的字段

时间:2013-08-18 13:31:33

标签: sql oracle mapping sql-loader

使用Oracle SQL Loader加载外部csv时,有没有办法在控制文件中直接将字段映射到彼此?

目前我正在进行简单的加载,因此源字段的位置很重要。有没有办法做到这一点呢?所以而不是:

load data
into table1
fields terminated by "," optionally enclosed by '"'
(destination_field1, destination_field2, destination_field3)

做类似的事情:

load data
into table1
fields terminated by "," optionally enclosed by '"'
(
source_field2 => destination_field1,
source_field1 => destination_field2,
source_field3 => destination_field3
)

修改

主要原因是源文件中列的顺序可能会发生变化,因此我无法确定哪个字段将是第一个,第二个等。

1 个答案:

答案 0 :(得分:2)

您可以在控制文件中包含通过Oracle功能进行的任何数据处理 例如,此代码交换第1列和第2列,并另外将source_field2转换为数字,以静默方式将错误值替换为空值:

load data
append
into table SCHEMA.TABLE
fields terminated by ';' optionally enclosed by '"'
trailing nullcols
(
  source_field1     BOUNDFILLER,
  source_field2     BOUNDFILLER,
  source_field3     BOUNDFILLER,
  destination_field1 "to_number(regexp_substr(:source_field2, '^[-0-9,]*'),'9999999999D999','NLS_NUMERIC_CHARACTERS='', ''')",
  destination_field2 ":source_field1",
  destination_field3 ":source_field3"
)