我必须通过sql loader控制文件引用创建一些csv文件。我已经写了这段代码:
LOAD DATA
INFILE '$ROOT_FOLDER/xxx/xxx/xxx/example.csv' "str '\n'"
discardfile '$ROOT_FOLDER/xxx/xxx/xxx/example.dsc'
Append
INTO TABLE TABLE1
when (9) = ','
FIELDS TERMINATED BY ','
(
Field1 CHAR "to_date(:Field1,'YYYYMMDD')"
,Field2 CHAR
,Field3 FILLER char
,Field4 FILLER char
,Field5 CHAR
)
当我运行代码时,创建了三个csv文件,两个是正确的,最后一个不是。
这是一个正确的csv的示例:
INT_PROCESS,18.10.2019 05:35:02,18.10.2019 05:35:02,9
Date,Instrument ID,Instrument ID Type,Exchange Code,Close
20191017,XXXX=,F1,F2, -.49900
,GBP3MFSR=,F1,F2,
20191017,AAAA=,F1,F2,2.00000
20191016,BBBB=,F1,F2,1.90000
20191017,CCCC=,F1,F2, -.44800
20191017,DDDD=,F1,F2, -.41000
20191016,EEEE=,F1,F2,.71090
,FFFF=,F1,F2,
,GGGG=,F1,F2,
这就是我所犯的错误:
Date,Instrument ID,Instrument ID Type,Exchange Code,Close
20191016,XXXX=,F1,F3, -.551
20191016,YYYY=,F1,F2, -.466
如何以三个结构相同的csv修复代码?
理想情况下,除了创建.log
文件之外,您不需要任何文件。有关错误的详细信息,请参见.log
文件,但是sqlldr
尝试将INFILE子句中的数据加载到指定的表中。输出将是一个.log
文件,一个导致错误的记录的.bad
文件以及一个包含不满足您的条件标准的记录的丢弃文件。您的目标应该是加载而不创建.bad或.dsc文件。
[另外,我认为您的Field1条目是错误的,因为通常不将DATE数据类型插入CHAR列。