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  |
 |
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   |
 |
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>
|
|
|
|
|
Goto Forum:
Current Time: Tue Jul 08 04:34:48 CDT 2025
|