我正在使用SQL * Loader将CSV文件数据加载到名为EMPLOYEE
的表中。
我的CSV文件数据用逗号(,)分隔:
EMPID,EMPNAME,SALARY,GRADE
123,Rams,1000,A1
124,Sand,"2,000",A2
125,Bhas,"3,00,000",A3
我的控制文件是:
LOAD DATA
Insert INTO TABLE EMPLOYEE
Fields terminated by "," Optionally enclosed by '"' TRAILING NULLCOLS
(
EMPID,
EMPNAME,
SALARY,
GRADE
)
当我使用上述控制文件加载数据时,第一条记录加载良好,而第二条记录则存在问题,因为薪金字段中存在逗号(薪水在多列中加载,因为存在逗号)。
在我的数据薪水字段中,尽管它带有逗号(,),但双引号引起来。 SQL * Loader应该将双引号之间的值视为一个字段,并且salary也应正确加载。
请建议进行更改以正确加载数据。
答案 0 :(得分:0)
示例表:
SQL> create table test
2 (empid number,
3 empname varchar2(20),
4 salary varchar2(20),
5 grade varchar2(2));
Table created.
SQL>
控制文件:
load data
infile *
replace
into table test
fields terminated by ',' optionally enclosed by '"' trailing nullcols
(
empid,
empname,
salary,
grade
)
begindata
123,Rams,1000,A1
124,Sand,"2,000",A2
125,Bhas,"3,00,000",A3
加载会话:
SQL> $sqlldr scott/tiger@xe control=test03.ctl log=test03.log
SQL*Loader: Release 11.2.0.2.0 - Production on ╚et Stu 15 22:27:27 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Commit point reached - logical record count 2
Commit point reached - logical record count 3
SQL>
结果:
SQL> select * From test;
EMPID EMPNAME SALARY GR
---------- -------------------- -------------------- --
123 Rams 1000 A1
124 Sand 2,000 A2
125 Bhas 3,00,000 A3
SQL>