sql >> Database >  >> RDS >> Oracle

Oracle Unicode-spooling

met de juiste instellingen werkt je script wel met SQL*Plus. Dit is wat ik deed om het te testen:

  • (uiteraard) uw database moet unicode ondersteunen. Gebruik indien nodig NVARCHAR2.
  • Stel uw clienttoepassing correct in. zorg ervoor dat uw NLS_LANG-variabele correct is ingesteld, deze moet unicode ondersteunen. Ik heb de mijne ingesteld op AMERICAN_ENGLISH.UTF8 . Hoewel het DOS-venster van SQL*Plus niet alle Unicode-tekens weergeeft, worden ze correct in het bestand gespoold.
  • (uiteraard ook) zorg ervoor dat de toepassing die het spoolbestand leest het in de juiste tekenset opent.

Nu voor het script:

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

Dit zal de Russische karakters invoegen ЙЖ

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

Het bestand, geopend met een teksteditor (jEdit in mijn geval) met de juiste tekenset (UTF-8) geeft de tekens correct weer.



  1. schuine streep voor elk citaatprobleem

  2. Detecteer dubbele items in recursieve CTE

  3. .nextval JDBC invoegprobleem

  4. MySQL - UPDATE meerdere rijen met verschillende waarden in één query