B

xºH\€)ã@s,dd„Zdd„Zdd„Zdd„Zdd	„Zd
S)c
CsŠddl}ddl}ddl}d|jd<|j dd¡ddl}| |¡}y| |¡}Wn4|j	k
r„}zt
d|ƒtƒWdd}~XYnX|S)Néz'/u01/app/oracle/product/12.2.0/dbhome_1ZORACLE_HOMEz(/home/s/sultans/web/python/demo/etl/utilzCould not connect to database)ÚosÚsysZ	cx_OracleÚenvironÚpathÚinsertÚencryptZget_connection_stringÚconnectÚ
DatabaseErrorÚprintÚexit)Údb_namerrÚoradbrZconnect_stringÚconnÚe©rú2/home/s/sultans/web/python/demo/etl/util/oracle.pyr
s


rcCs"t|ƒ}y| ¡}| |¡}Wn"tdƒt|ƒtƒYnXt|jƒ}g}xP|jD]F}|d}|d}	|d}
|d}|d}|d}
|d}| |¡qXWg}| ¡}x^|dk	rd}i}x4|D],}||}|dkràd	}t	|ƒ||<|d7}qÈW| |¡| ¡}q°W| 
¡| 
¡|S)
NzCould not execute queryrééééééÚ)rÚcursorÚexecuter
rÚlenÚdescriptionÚappendZfetchoneÚstrÚclose)rÚsqlrrÚresultZnumOfColÚ	col_namesZcolInfoZcol_nameZcol_typeZcol_display_sizeZcol_internal_sizeZ
col_precisionZ	col_scaleZcol_nullableÚ	list_dictÚrowÚiÚdictÚ	col_valuerrrÚquery%sF


r(c
Cs‚d|}t|ƒ}y | ¡}| |¡| d¡Wn<tjk
rl}ztd|ƒt|ƒtƒWdd}~XYnX| ¡| ¡dS)NzDROP TABLE ÚCOMMITzCould not drop table)rrrr
r	r
rr)rÚ
table_namer rrrrrrÚ	dropTableWs

r+c
CsHddl}d|d}|d7}|d}x†| ¡D]z\}}|d|d7}t|ƒ}| d|¡sj| dt|ƒ¡rt|d	7}q.|tks„|tkrŽ|d
7}q.|tkr |d7}q.|d7}q.W|dt|ƒd
…d}|d7}t	|ƒ}	y |	 
¡}
|
 |¡|
 d¡Wn>tj
k
r2}ztd|ƒt|ƒtƒWdd}~XYnX|
 ¡|	 ¡dS)Nrz
CREATE TABLE Ú
z( 
z    z	 z(date|_dt|dt_)z^[0123]?\d-\w\w\w-\d\dzDATE, 
z	NUMBER, 
zVARCHAR2(250), 
zUNKNOWN DATATYPE, 
rú)r)zCould not create table)ÚreÚitemsÚtypeÚsearchÚmatchrÚintÚfloatrrrrr
r	r
rr)rr*r#r.r Z
firstEntryZcolnameZcolvalueZdatatyperrrrrrÚcreateTablens8




r5c

CsNddl}d}t|ƒ}yæ| ¡}xÎ|D]Æ}| ¡}| ¡}	d|}
|
dd |¡d7}
|
d7}
xF|	D]>}t|tƒr’| dd|¡}|
d|d	7}
qd|
t|ƒd7}
qdW|
dt	|
ƒd
…}
|
d7}
| 
|
¡|d7}|d
dkr$| 
d¡q$W| 
d¡Wn>tjk
r8}zt
d|ƒt
|
ƒtƒWdd}~XYnX| ¡| ¡|S)NrzINSERT INTO z (z, z) zVALUES(ú'ú"z', rr-rédr)zCould not execute insert)r.rrÚkeysÚvaluesÚjoinÚ
isinstancerÚsubrrr
r	r
rr)
rr*r#r.Úcountrrr&r"Z
col_valuesr r'rrrrršs<




rN)rr(r+r5rrrrrÚ<module>
s2,