我需要将制表符分隔的文件上传到现有的Oracle表中。一些记录在中间有空字段(不是之前已经回答的整列),我无法使sqlldr正确加载记录之后的空字段。考虑示例文件:
ID-> col1-> col2-> col3
rec1-> 1.28-> 2.56-> 5.12
rec2-> 1.28-> ->
rec3-> -> -> 5.12
以及以下控制文件upload.ctl:
OPTIONS (SKIP=1)
load data infile 'file.tab'
replace into table TARGET_TABLE
fields terminated by "\t" optionally enclosed by '"'
TRAILING NULLCOLS
(ID char terminated by "\t",
col1 terminated by "\t",
col2 terminated by "\t",
col3 terminated by "\t")
将导致以下上传:
+------+------+------+------+
|ID |col1 |col2 |col3 |
+------+------+------+------+
|rec1 |1.28 |2.56 |5.12 |
|rec2 |1.28 |(null)|(null)|
|rec3 |5.12 |(null)|(null)|
要上传的文件中的空字段使用正确数量的制表符填充,但sqlldr似乎将连续的制表符识别为一个。我怎么能防止这种情况? 感谢您查看我的新手问题!
答案 0 :(得分:0)
它没有将TAB视为分隔符。将字段终止行更改为:
fields terminated by X'09' optionally enclosed by '"'
并删除" \ t""从每个列条目中不需要它。