spanish nls_language nls_lang nls_characterset how change cambiar american 11g oracle unicode spool

nls_language - Oracle Unicode Spooling



oracle nls_lang (2)

¿Cómo puedo transferir los datos de una tabla a un archivo que contiene caracteres Unicode?

Tengo un archivo sql que ejecuto desde la pantalla SQL * Plus y su contenido es:

SET ECHO OFF SET FEEDBACK OFF SET HEADING OFF SET PAGESIZE 0 SPOOL STREET_POINT_THR.BQSV SELECT GEOX||''`''||GEOY||''`''||UNICODE_DESC||''`''||ASCII_DESC FROM GEO.STREET_POINTS; SPOOL OFF


No creo que SQLPlus (al menos en Windows) sea compatible con Unicode. Acabo de probar aquí y parece que no funciona. No estoy seguro de si está bien mencionar esto aquí, pero mi propia herramienta, "Golden 6", admite spooling unicode, aunque solo es Windows. Tenga en cuenta que debe usar "SET ENCODING [UNICODE | UTF-8 | ANSI] [NOBOM]" antes del comando spool para elegir la codificación correcta.

Mark Ford
Software Benthic
www.benthicsoftware.com

Editar: Como Vincent señaló, está funcionando. Tenga en cuenta que el archivo UTF-8 creado no tiene BOM pero es un archivo UTF-8.


con la configuración correcta, su script funciona con SQL * Plus. Esto es lo que hice para probarlo:

  • (obviamente) su base de datos debe ser compatible con Unicode. Use NVARCHAR2 si es necesario.
  • Configure su aplicación cliente correctamente . asegúrese de que su variable NLS_LANG esté configurada correctamente, debe ser compatible con Unicode. Configuré el mío a AMERICAN_ENGLISH.UTF8 . Mientras que la ventana DOS de SQL * Plus no mostrará todos los caracteres Unicode, se colocarán en la cola correctamente en el archivo.
  • (obviamente también) asegúrese de que la aplicación que lee el archivo en spool lo abre en el conjunto de caracteres correcto.

Ahora para el guión:

SQL> select * from v$nls_parameters where parameter = ''NLS_CHARACTERSET''; PARAMETER VALUE ------------------ ------ NLS_CHARACTERSET UTF8 SQL> create table street_points (data varchar2(10)); Table created SQL> INSERT INTO street_points VALUES (chr(53401)||chr(53398)); 1 row inserted

Esto insertará los caracteres rusos ЙЖ

SQL> SPOOL STREET_POINT_THR.BQSV SQL> SELECT * FROM STREET_POINTS; ðÖðû SQL> SPOOL OFF

El archivo, abierto con un editor de texto (jEdit en mi caso) con el juego de caracteres correcto (UTF-8) muestra los caracteres correctamente.