Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Spooling Oracle Unicode


com as configurações corretas, seu script funciona com o SQL*Plus. Aqui está o que eu fiz para testar:
  • (obviamente) seu banco de dados deve suportar unicode. Use NVARCHAR2 se necessário.
  • Configure seu aplicativo cliente corretamente. certifique-se de que sua variável NLS_LANG esteja configurada corretamente, ela deve suportar unicode. Configurei o meu para AMERICAN_ENGLISH.UTF8 . Embora a janela DOS do SQL*Plus não exiba todos os caracteres unicode, eles serão colocados em spool corretamente no arquivo.
  • (obviamente também) certifique-se de que o aplicativo que lê o arquivo em spool o abra no conjunto de caracteres correto.

Agora para o roteiro:
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

Isto irá inserir os caracteres russos ЙЖ
SQL> SPOOL STREET_POINT_THR.BQSV
SQL> SELECT * FROM STREET_POINTS;
ðÖðû
SQL> SPOOL OFF

O arquivo, aberto com um editor de texto (jEdit no meu caso) com o conjunto de caracteres correto (UTF-8) exibe os caracteres corretamente.