Solved

SQL LOADER issue with incomplete char data

Posted on 2014-04-30
5
568 Views
Last Modified: 2014-04-30
Hi experts, when I do an insert/append with sqlldr I see incomplete data in a CHAR column:
Here de control.ctl
Load DATA
CHARACTERSET WE8ISO8859P1
INFILE '60.dat' 
BADFILE '60.bad'
DISCARDFILE '60.dsc'
INTO TABLE TEMAS
Append
fields terminated by "|"
OPTIONALLY ENCLOSED BY '"'
trailing NULLCOLS
(ID           Integer "temas_id.nextval",              
 NOMBRE       CHAR(100), 
 INTERPRETE   CHAR NULLIF INTERPRETE=' ',
 TITULO       CHAR NULLIF TITULO=' ',
 ALBUM        CHAR NULLIF ALBUM=' ',
 FECHA        Date "DD-MM-YYYY HH24:Mi:SS",
 GENERO       CHAR NULLIF GENERO=' ',                
 TAMAÑO       CHAR NULLIF TAMAÑO=' ',
 DURACION     CHAR NULLIF DURACION=' ',                
 VELOCIDAD    CHAR NULLIF VELOCIDAD=' ',                
 COMENTARIOS  CHAR NULLIF COMENTARIOS=' ',               
 PATH         CHAR NULLIF PATH=' ')

Open in new window

here a portion of data:
|60 - uno.mp3  |||||||||||
|60 - dos.mp3  |||||||||||
|60 - tres.mp3 |||||||||||

Open in new window

After append, I hope to view:
select nombre from temas;

Open in new window

Result:
60 - uno.mp3
60 - dos.mp3
60 - tres.mp3

Open in new window

But I see:
- uno.mp3
- dos.mp3
- tres.mp3

Open in new window

The definition of the table is:
CREATE TABLE TEMAS
(
  ID           INTEGER,
  NOMBRE       VARCHAR2(100 BYTE),
  INTERPRETE   VARCHAR2(50 BYTE),
  TITULO       VARCHAR2(100 BYTE),
  ALBUM        VARCHAR2(50 BYTE),
  FECHA        DATE                             DEFAULT TO_DATE(SYSDATE,'DD/MM/YYYY HH24:MI:SS'),
  GENERO       VARCHAR2(30 BYTE),
  TAMAÑO       VARCHAR2(60 BYTE),
  DURACION     VARCHAR2(20 BYTE),
  VELOCIDAD    VARCHAR2(20 BYTE),
  COMENTARIOS  VARCHAR2(200 BYTE),
  PATH         VARCHAR2(200 BYTE)
)
TABLESPACE USERS;

Open in new window

What it is wrong?
Thank in advanced
Regards
0
Comment
Question by:carlino70
  • 2
  • 2
5 Comments
 
LVL 23

Expert Comment

by:David
ID: 40032400
Would you please display the actual results rather than a representation?  At first glance, the VARCHAR to CHAR conversion should not be stripping out data from the column.

SELECT id, SUBSTR(nombre,1,30) nombre
FROM temas
WHERE ROWNUM < 5
/
0
 

Author Comment

by:carlino70
ID: 40032508
Here the answer:

ID|NOMBRE
341|- donald - tiritando.mp3      
342|- los naufragos - de boliche e
343|- los naufragos - estoy hecho 
344|- palito ortega - bienvenido a

Open in new window

without SUBSTR, should be:
ID|NOMBRE
341|- donald - tiritando.mp3                       
342|- los naufragos - de boliche en boliche.mp3    
343|- los naufragos - estoy hecho un demonio.mp3   
344|- palito ortega - bienvenido amor.mp3          

Open in new window

note: I dont understand why appears the "|" between columns (?)
0
 
LVL 77

Accepted Solution

by:
slightwv (䄆 Netminder) earned 500 total points
ID: 40032587
Try removing the data type for id.

Change:
...
trailing NULLCOLS
(ID           Integer "temas_id.nextval",  
...

To:
...
trailing NULLCOLS
(ID           "temas_id.nextval",  
...
0
 

Author Comment

by:carlino70
ID: 40032766
Excellent!,

The inclusion of the data type INTEGER, somehow confused the sql loader.
Thanks
0
 
LVL 77

Expert Comment

by:slightwv (䄆 Netminder)
ID: 40032773
Just a theory:
I think sqlloader was looking for an integer in the data before looking at the seq.nextval.

Without the data type, it took it as a literal value and ignored the data.
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Working with Network Access Control Lists in Oracle 11g (part 1) Part 2: http://www.e-e.com/A_9074.html So, you upgraded to a shiny new 11g database and all of a sudden every program that used UTL_MAIL, UTL_SMTP, UTL_TCP, UTL_HTTP or any oth…
I remember the day when someone asked me to create a user for an application developement. The user should be able to create views and materialized views and, so, I used the following syntax: (CODE) This way, I guessed, I would ensure that use…
This video explains at a high level with the mandatory Oracle Memory processes are as well as touching on some of the more common optional ones.
Via a live example, show how to take different types of Oracle backups using RMAN.

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question