达到了承诺点

时间:2014-06-11 10:59:12

标签: sql oracle

您好我正在尝试将一些数据加载到我创建的Oracle表中

这是我在Vivek架构中创建的表格

Desc STAR

Name                       NULL       TYPE
-----------------------------------------------------
STAR_ID                    Not Null    Number(4)
FIRST_NAME                             Varchar2(30)
LAST_NAME                              Varchar2(30)
DOB                                    Date
SEX                                    Char(1)
Nationality                            Varchar2(40)
Alive                                  Char(1)

以下是我尝试使用SQL Loader

上传的STAR5.CSV文件中的数据
10,NASEERUDDIN,SHAH,M,INDIAN,Y
11,DIMPLE,KAPADIA,F,INDIAN,Y

控制文件如下

load data
 infile '/home/oracle/host/Vivek12/STAR_DATA5.csv'
append
into table vivek.STAR
fields terminated by "," 
( STAR_ID,FIRST_NAME,LAST_NAME,SEX,NATIONALITY,ALIVE )

当我使用以下命令运行SQL Loader时

$ sqlldr vivek/password
control = /home/oracle/sqlldr_add_new.ct1

我收到消息:

达到提交点 - 逻辑记录计数2

但是,未加载数据并将其放入文件STAR5.bad

知道数据没有被加载的原因吗?

1 个答案:

答案 0 :(得分:1)

你最有可能在你的行尾有一个“隐形”字符。也许您在Linux上执行此操作并且该文件是在Windows上创建的,因此您需要额外的回车 - Linux仅使用换行作为行终止符。

更改您的ctl文件以删除终止空格:

load data
infile '/home/oracle/host/Vivek12/STAR_DATA5.csv'
append
  into table vivek.STAR
fields terminated by "," 
 ( STAR_ID
 , FIRST_NAME
 , LAST_NAME
 , SEX
 , NATIONALITY
 , ALIVE terminated by whitespace
   )

如果这不起作用,那么您将需要弄清楚那些字符和replace它们。