通过控制文件创建.csv文件

通过控制文件创建.csv文件,csv,sql-loader,Csv,Sql Loader,我必须通过sql加载器控制文件引用创建一些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

我必须通过sql加载器控制文件引用创建一些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会尝试将INFLE子句中的数据加载到指定的表中。输出将是.log文件、导致错误的记录的.bad文件和包含不符合条件条件条件的记录的丢弃文件。您的目标应该是在不创建.bad或.dsc文件的情况下加载

另外,我认为您的Field1条目是错误的,因为您通常不会在CHAR列中插入日期数据类型

在继续之前,您可能需要阅读以下内容: