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

问题描述 投票:1回答:1

我必须通过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修复代码?

csv sql-loader
1个回答
0
投票

理想情况下,除了创建.log文件之外,您不需要任何文件。有关错误的详细信息,请参见.log文件,但是sqlldr尝试将INFILE子句中的数据加载到指定的表中。输出将是一个.log文件,一个导致错误的记录的.bad文件以及一个包含不满足您的条件标准的记录的丢弃文件。您的目标应该是加载而不创建.bad或.dsc文件。

[另外,我认为您的Field1条目是错误的,因为通常不将DATE数据类型插入CHAR列。

您可能需要阅读一些内容才能继续:https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sutil/oracle-sql-loader-control-file-contents.html#GUID-34A050B6-3FD7-4B77-97D2-04C03D359D16

© www.soinside.com 2019 - 2024. All rights reserved.