sql >> Database >  >> RDS >> Oracle

Hoe controleer ik de NLS_LANG van de client?

Dit is wat ik doe als ik coderingsproblemen oplos. (De NLS_LANG waarde gelezen door sqlplus):

SQL>/* It's a hack. I don't know why it works. But it does!*/
SQL>@[%NLS_LANG%]
SP2-0310: unable to open file "[NORWEGIAN_NORWAY.WE8MSWIN1252]" 

Je zal moeten de NLS_LANG-waarde in het huidige ORACLE_HOME uit het register halen. Alle hulpprogramma's aan de clientzijde (sqlplus, sqlldr, exp, imp, oci, enz...) lezen deze waarde uit het register en bepalen of er transcodering van tekens moet plaatsvinden.

ORACLE_HOME en registersectie:

C:\>dir /s/b oracle.key
C:\Oracle10\BIN\oracle.key

C:\>type C:\Oracle10\BIN\oracle.key
SOFTWARE\ORACLE\KEY_OraClient10204_Home

In tijden als deze wend ik me tot IPython om een ​​idee te demonstreren:

Een paar keer opzoeken en je bent er!

In [36]: OHOMES_INSTALLED = !where oci.dll

In [37]: OHOMES_INSTALLED
Out[37]:
['C:\\Oracle10\\BIN\\oci.dll',
'C:\\oraclexe\\app\\oracle\\product\\11.2.0\\server\\bin\\oci.dll']

In [38]: ORACLE_HOME = os.path.dirname(OHOMES_INSTALLED[0])

In [39]: ORACLE_HOME
Out[39]: 'C:\\Oracle10\\BIN'

In [40]: f = open(os.path.join(ORACLE_HOME, "oracle.key"))

In [41]: SECTION = f.read()

In [42]: SECTION
Out[42]: 'SOFTWARE\\ORACLE\\KEY_OraClient10204_Home\n'

In [43]: from _winreg import *

In [44]: aReg = ConnectRegistry(None,HKEY_LOCAL_MACHINE)

In [46]: aKey = OpenKey(aReg,SECTION.strip())

In [47]: val = QueryValueEx(aKey, "NLS_LANG")

In [48]: print val
(u'NORWEGIAN_NORWAY.WE8MSWIN1252', 1)


  1. MySQL datetime-velden en zomertijd -- hoe verwijs ik naar het extra uur?

  2. Hoe importeer ik een CSV-bestand in een MySQL-tabel?

  3. Verbinding maken met SQL Server-instantie met behulp van Windows-verificatie of SQL Server-verificatie - SQL Server / T-SQL-zelfstudie, deel 3

  4. Proberen om een ​​Oracle te exporteren via PL/SQL geeft een datum van 0000-00-00