Home » SQL & PL/SQL » SQL & PL/SQL » External table and Spanish characters (2 Merged) (Oracle 11g XE on Windows XP)
- External table and Spanish characters (2 Merged) [message #524947] Tue, 27 September 2011 14:55 Go to next message
wakproductions_fdb
Messages: 15
Registered: September 2011
Location: Indiana
Junior Member
Hi All,

I am having difficulty importing Spanish text files into my Oracle 11g XE database. Below is my external table declaration code. The external file is attached.

CREATE OR REPLACE DIRECTORY xtern_data_dir AS 'C:/.../';

CREATE TABLE ET_SLBLWD0_SPNSH_DESC (
	LBL_WARN VARCHAR(4),
	LBL_TXTSNS NUMBER(2),
	LBL_DESCS VARCHAR2(55),
	LBLGNDR CHAR(1),
	LBLAGE CHAR(1),
	LBLPREG CHAR(1),
	LBLINFO CHAR(1)
)
ORGANIZATION EXTERNAL (
	default directory xtern_data_dir
	ACCESS PARAMETERS
	(
		records delimited by newline
		badfile xtern_log_dir:'SLBLWD0_SPNSH_DESC.bad'
		logfile xtern_log_dir:'SLBLWD0_SPNSH_DESC'
		discardfile xtern_log_dir:'SLBLWD0_SPNSH_DESC'
		fields terminated by '|'
		MISSING FIELD VALUES ARE NULL
	)
	location ('SLBLWD0_CRLF.TXT')
) reject limit unlimited;


All 406 rows seem to import fine, but do not display the Spanish accent characters correctly. Note the strange characters:

SQL> SELECT count(*) FROM ET_SLBLWD0_SPNSH_DESC;

  COUNT(*)                                                                      
----------                                                                      
       406                                                                      

SQL> select * from et_slblwd0_spnsh_desc;

LBL_ LBL_TXTSNS LBL_DESCS                                               L L L L 
---- ---------- ------------------------------------------------------- - - - - 
0001          1 Puede causar somnolencia. El alcohol puede intensificar         
0001          2 este efecto. Tenga cuidado cuando conduzca veh¿los              
0001          3 automotores u opere maquinaria peligrosa.                       
0002          1 Importante: Acabe todo este medicamento a menos que             
0002          2 quien le escriba la receta le indique lo contrario.             
0003          1 Tome este medicamento con el est¿o vac¿una hora                 
0003          2 antes o dos a tres horas despu¿de comer, a menos que            
0003          3 su m¿co le indique lo contrario.                                
0005          1 Debe tomar este medicamento con mucha agua.                     
0006          1 Puede descolorar la orina o las heces.                          
0008          1 No consuma bebidas alcoh¿as mientras tome este                  


I tried modifying my external table declaration by adding CHARACTERSET WE8ISO8859P1 and CHARACTERSET WE8MSWIN1252, but that just seems to cause the system to throw out ALL the rows containing Spanish characters:

COUNT(*)                                                         ----------                                                       197                                                              

SQL> select * from et_slblwd0_spnsh_desc;

LBL_ LBL_TXTSNS LBL_DESCS                                               L L L L 
---- ---------- ------------------------------------------------------- - - - - 
0001          1 Puede causar somnolencia. El alcohol puede intensificar         
0001          3 automotores u opere maquinaria peligrosa.                       
0002          1 Importante: Acabe todo este medicamento a menos que             
0002          2 quien le escriba la receta le indique lo contrario.             
0005          1 Debe tomar este medicamento con mucha agua.                     
0006          1 Puede descolorar la orina o las heces.                          
0008          2 medicamento.                                                    
0011          2 prolongados a los rayos solares directos y/o                    
0011          3 artificiales mientras tome este medicamento.                    
0013          1 Es muy importante que lo tome o lo use exactamente              
0014          1 Consulte a un profesional de la salud antes de tomar            


The log file specifies the following error on the bad rows:
error processing column LBL_DESCS in row xxx for datafile ...\SLBLWD0_CRLF.TXT
ORA-12899: value too large for column LBL_DESCS (actual: 55, maximum: 55)


What can I do to import these Spanish characters correctly?

Thanks!
- Re: External table and Spanish characters (2 Merged) [message #524951 is a reply to message #524947] Tue, 27 September 2011 15:54 Go to previous messageGo to next message
Barbara Boehmer
Messages: 9106
Registered: November 2002
Location: California, USA
Senior Member
In my testing I found that the combination of either CHARACTERSET WE8ISO8859P1 or CHARACTERSET WE8MSWIN1252 and changing the length of the LBL_DESCS column from 55 to 60 solved the problem. I have demonstrated first a reproduction of the problem, then solution, using only the first 25 rows for testing. However, my database characterset is AL32UTF8, so if yours is different then you may get different results.

-- reproduction:
SCOTT@orcl_11gR2> CREATE OR REPLACE DIRECTORY xtern_data_dir AS 'C:\my_oracle_files'
  2  /

Directory created.

SCOTT@orcl_11gR2> CREATE OR REPLACE DIRECTORY xtern_log_dir AS 'C:\my_oracle_files'
  2  /

Directory created.

SCOTT@orcl_11gR2> CREATE TABLE ET_SLBLWD0_SPNSH_DESC (
  2  	     LBL_WARN	 VARCHAR(4),
  3  	     LBL_TXTSNS  NUMBER(2),
  4  	     LBL_DESCS	 VARCHAR2(55),
  5  	     LBLGNDR	 CHAR(1),
  6  	     LBLAGE	 CHAR(1),
  7  	     LBLPREG	 CHAR(1),
  8  	     LBLINFO	 CHAR(1)
  9  )
 10  ORGANIZATION EXTERNAL (
 11  	     default directory xtern_data_dir
 12  	     ACCESS PARAMETERS
 13  	     (
 14  		     records delimited by newline
 15  		     badfile xtern_log_dir:'SLBLWD0_SPNSH_DESC.bad'
 16  		     logfile xtern_log_dir:'SLBLWD0_SPNSH_DESC.log'
 17  		     discardfile xtern_log_dir:'SLBLWD0_SPNSH_DESC'
 18  		     fields terminated by '|'
 19  		     MISSING FIELD VALUES ARE NULL
 20  	     )
 21  	     location ('SLBLWD0_CRLF.TXT')
 22  ) reject limit unlimited
 23  /

Table created.

SCOTT@orcl_11gR2> select * from ET_SLBLWD0_SPNSH_DESC
  2  /

LBL_ LBL_TXTSNS LBL_DESCS                                               L L L L
---- ---------- ------------------------------------------------------- - - - -
0001          1 Puede causar somnolencia. El alcohol puede intensificar
0001          2 este efecto. Tenga cuidado cuando conduzca veh¿los
0001          3 automotores u opere maquinaria peligrosa.
0002          1 Importante: Acabe todo este medicamento a menos que
0002          2 quien le escriba la receta le indique lo contrario.
0003          1 Tome este medicamento con el est¿o vac¿una hora
0003          2 antes o dos a tres horas despu¿de comer, a menos que
0003          3 su m¿co le indique lo contrario.
0005          1 Debe tomar este medicamento con mucha agua.
0006          1 Puede descolorar la orina o las heces.
0008          1 No consuma bebidas alcoh¿as mientras tome este
0008          2 medicamento.
0009          1 Algunos medicamentos sin receta m¿ca pueden agravar
0009          2 su afecci¿Lea todas las etiquetas con cuidado.
0009          3 Consulte a su m¿co si se incluye alguna advertencia.
0010          1 T¿e con alimentos.
0011          1 Evite exponerse excesivamente o por per¿os
0011          2 prolongados a los rayos solares directos y/o
0011          3 artificiales mientras tome este medicamento.
0013          1 Es muy importante que lo tome o lo use exactamente
0013          2 seg¿n las indicaciones. No omita ninguna dosis ni lo
0013          3 deje de usar a menos que lo mande el m¿co.
0014          1 Consulte a un profesional de la salud antes de tomar
0014          2 medicamentos sin receta m¿ca ya que algunos pueden
0014          3 afectar la acci¿e este medicamento.

25 rows selected.


-- solution:
SCOTT@orcl_11gR2> drop table ET_SLBLWD0_SPNSH_DESC
  2  /

Table dropped.

SCOTT@orcl_11gR2> CREATE TABLE ET_SLBLWD0_SPNSH_DESC (
  2  	     LBL_WARN	 VARCHAR(4),
  3  	     LBL_TXTSNS  NUMBER(2),
  4  	     LBL_DESCS	 VARCHAR2(60),
  5  	     LBLGNDR	 CHAR(1),
  6  	     LBLAGE	 CHAR(1),
  7  	     LBLPREG	 CHAR(1),
  8  	     LBLINFO	 CHAR(1)
  9  )
 10  ORGANIZATION EXTERNAL (
 11  	     default directory xtern_data_dir
 12  	     ACCESS PARAMETERS
 13  	     (
 14  		     records delimited by newline
 15  		     characterset WE8ISO8859P1
 16  		     badfile xtern_log_dir:'SLBLWD0_SPNSH_DESC.bad'
 17  		     logfile xtern_log_dir:'SLBLWD0_SPNSH_DESC.log'
 18  		     discardfile xtern_log_dir:'SLBLWD0_SPNSH_DESC'
 19  		     fields terminated by '|'
 20  		     MISSING FIELD VALUES ARE NULL
 21  	     )
 22  	     location ('SLBLWD0_CRLF.TXT')
 23  ) reject limit unlimited
 24  /

Table created.

SCOTT@orcl_11gR2> select * from ET_SLBLWD0_SPNSH_DESC
  2  /

LBL_ LBL_TXTSNS LBL_DESCS                                                    L L L L
---- ---------- ------------------------------------------------------------ - - - -
0001          1 Puede causar somnolencia. El alcohol puede intensificar
0001          2 este efecto. Tenga cuidado cuando conduzca vehículos
0001          3 automotores u opere maquinaria peligrosa.
0002          1 Importante: Acabe todo este medicamento a menos que
0002          2 quien le escriba la receta le indique lo contrario.
0003          1 Tome este medicamento con el estómago vacío una hora
0003          2 antes o dos a tres horas después de comer, a menos que
0003          3 su médico le indique lo contrario.
0005          1 Debe tomar este medicamento con mucha agua.
0006          1 Puede descolorar la orina o las heces.
0008          1 No consuma bebidas alcohólicas mientras tome este
0008          2 medicamento.
0009          1 Algunos medicamentos sin receta médica pueden agravar
0009          2 su afección. Lea todas las etiquetas con cuidado.
0009          3 Consulte a su médico si se incluye alguna advertencia.
0010          1 Tómese con alimentos.
0011          1 Evite exponerse excesivamente o por períodos
0011          2 prolongados a los rayos solares directos y/o
0011          3 artificiales mientras tome este medicamento.
0013          1 Es muy importante que lo tome o lo use exactamente
0013          2 según las indicaciones. No omita ninguna dosis ni lo
0013          3 deje de usar a menos que lo mande el médico.
0014          1 Consulte a un profesional de la salud antes de tomar
0014          2 medicamentos sin receta médica ya que algunos pueden
0014          3 afectar la acción de este medicamento.

25 rows selected.

SCOTT@orcl_11gR2>

- Re: External table and Spanish characters (2 Merged) [message #525059 is a reply to message #524951] Wed, 28 September 2011 10:54 Go to previous messageGo to next message
wakproductions_fdb
Messages: 15
Registered: September 2011
Location: Indiana
Junior Member
Yay! Widening the field does the trick! Thanks for suggesting that.

I presume that fixes it because the special characters take up multiple bytes?
- Re: External table and Spanish characters (2 Merged) [message #525062 is a reply to message #525059] Wed, 28 September 2011 11:23 Go to previous message
Michel Cadot
Messages: 68761
Registered: March 2007
Location: Saint-Maur, France, https...
Senior Member
Account Moderator
Quote:
I presume that fixes it because the special characters take up multiple bytes?

In (AL32)TUF8, yes; not in WE8% character sets.
Check your DATABASE character set.

Regards
Michel
Previous Topic: MATERIALIZED VIEW performance
Next Topic: DB LINK (2 Merged)
Goto Forum:
  


Current Time: Tue Jul 08 04:34:48 CDT 2025