ich greife über Python und dem Oracle Treiber auf eine Oracle Datenbank zu. Schreibe ich ein select auf ein Datenbankfeld im DATE Format und exportiere dieses in eine CSV Datei, dann wird das Datum in folgendem Format ausgegeben :
2016-03-11 00:00:00
Leider bekomme ich es nicht hin, dass das Datum im Deutschen Format ohne die Zeit exportiert wird.
Ich bin dann natürlich recht flott auf die NLS Variablen gestossen. Diese habe ich dann vor Ausführung meines SQLs auf die folgenden Werte gesetzt und habe diverse Versuche/Anpassungen vorgenommen :
( Nur so nebenbei: ein € Zeichen nimmt er übrigens nicht, da dann eine Fehlermeldung erscheint, dass er das Zeichen nicht kennt )
11.2.0.3.0
('NLS_LANGUAGE', 'GERMAN')
('NLS_TERRITORY', 'GERMANY')
('NLS_CURRENCY', 'EUR')
('NLS_ISO_CURRENCY', 'GERMANY')
('NLS_NUMERIC_CHARACTERS', ',.')
('NLS_CALENDAR', 'GREGORIAN')
('NLS_DATE_FORMAT', 'DD.MM.YY')
('NLS_DATE_LANGUAGE', 'GERMAN')
('NLS_CHARACTERSET', 'WE8MSWIN1252')
('NLS_SORT', 'GERMAN')
('NLS_TIME_FORMAT', 'HH24:MI:SSXFF')
('NLS_TIMESTAMP_FORMAT', 'DD.MM.RR HH24:MI:SSXFF')
('NLS_TIME_TZ_FORMAT', 'HH24:MI:SSXFF TZR')
('NLS_TIMESTAMP_TZ_FORMAT', 'DD.MM.RR HH24:MI:SSXFF TZR')
('NLS_DUAL_CURRENCY', 'EUR')
('NLS_NCHAR_CHARACTERSET', 'AL16UTF16')
('NLS_COMP', 'BINARY')
('NLS_LENGTH_SEMANTICS', 'BYTE')
('NLS_NCHAR_CONV_EXCP', 'FALSE')
Im SQL Developer funktioniert alles korrekt.
Weiß jemand einen Rat ?
Hier nochmal der Code.....
Code: Alles auswählen
import os
import cx_Oracle
import csv
con = cx_Oracle.connect('XXXXXXXXXXXXXXXXXXX')
print(con.version)
SQL00='alter session set NLS_LANGUAGE="GERMAN"'
SQL01='alter session set NLS_TERRITORY="GERMANY"'
SQL02='alter session set NLS_CURRENCY="EUR"'
SQL03='alter session set NLS_ISO_CURRENCY="GERMANY"'
SQL04='alter session set NLS_TIME_FORMAT="dd.mm.rr"'
SQL05='alter session set NLS_TIMESTAMP_FORMAT="DD.MM.RR HH24:MI:SSXFF"'
SQL06='alter session set NLS_TIME_TZ_FORMAT="HH24:MI:SSXFF TZR"'
SQL07='alter session set NLS_TIMESTAMP_TZ_FORMAT="DD.MM.RR HH24:MI:SSXFF TZR"'
SQL08='alter session set NLS_DUAL_CURRENCY="EUR"'
SQL09='alter session set nls_date_format="DD.MM.YY"'
SQL1='SELECT * FROM V$NLS_PARAMETERS'
SQL2="select * from TEST where TEST2='ABC' and nr=9509895"
# Network drive somewhere
filename="output.csv"
FILE=open(filename,"w");
output=csv.writer(FILE, dialect='excel',delimiter=";")
# You can set these in system variables but just in case you didnt
#os.putenv('ORACLE_HOME', '/oracle/product/10.2.0/db_1')
#os.putenv('LD_LIBRARY_PATH', '/oracle/product/10.2.0/db_1/lib')
#connection = cx_Oracle.connect('userid/password@99.999.9.99:PORT/SID')
cursor = con.cursor()
cursor.execute(SQL00)
cursor.execute(SQL01)
cursor.execute(SQL02)
cursor.execute(SQL03)
# cursor.execute(SQL04)
cursor.execute(SQL05)
cursor.execute(SQL06)
cursor.execute(SQL07)
cursor.execute(SQL08)
cursor.execute(SQL09)
cursor.execute(SQL2)
for row in cursor:
print(row)
output.writerow(row)
cursor.close()
con.close()
FILE.close()