sql >> Databasteknik >  >> RDS >> Oracle

Oracle Unicode Spooling

med rätt inställningar fungerar ditt skript med SQL*Plus. Det här är vad jag gjorde för att testa det:

  • (uppenbarligen) din databas måste stödja unicode. Använd NVARCHAR2 vid behov.
  • Konfigurera din klientapplikation korrekt. se till att din NLS_LANG-variabel är korrekt inställd, den måste stödja unicode. Jag ställer in min till AMERICAN_ENGLISH.UTF8 . Även om DOS-fönstret i SQL*Plus inte visar alla unicode-tecken, kommer de att spoolas in korrekt i filen.
  • (uppenbarligen också) se till att programmet som läser den spoolade filen öppnar den med rätt teckenuppsättning.

Nu till skriptet:

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

Detta kommer att infoga de ryska tecknen ЙЖ

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

Filen, öppnad med en textredigerare (jEdit i mitt fall) med rätt teckenuppsättning (UTF-8) visar tecknen korrekt.



  1. Motsvarar unpivot() i PostgreSQL

  2. Hur ersätter man specifika värden i en Oracle-databaskolumn?

  3. Fler showplanförbättringar? Ja tack!

  4. Hur man hittar waitevent History of the Oracle-session