使用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
)
修改
主要原因是源文件中列的顺序可能会发生变化,因此我无法确定哪个字段将是第一个,第二个等。
答案 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"
)