I am trying to clone SCOTT.EMP table with TEST table. However datatypes are not matching.
Please advise how to create a clone of EMP with new Table "TEST" with Same datatype in python pandas.
DESC EMP:
Name Null? Type
-------- -------- ------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
import pandas as pd
import oracledb
from sqlalchemy import create_engine
# create engine
engine = create_engine("oracle+oracledb://scott:tiger@LAPTOP-QMH68LT9:1521?service_name=ORCLPDB")
# query Oracle and put the result into a pandas Dataframe
df= pd.read_sql('SELECT * FROM EMP', engine)
>>> df_test = df.copy()
>>> df_test.to_sql('test', con=engine,if_exists='replace',index=False,dtype={'sal':sa.types.Float,'mgr':sa.types.Float,'comm':sa.types.Float})
-1
DESC TEST
Name Null? Type
-------- ----- ----------
EMPNO NUMBER(19)
ENAME CLOB
JOB CLOB
MGR FLOAT(126)
HIREDATE DATE
SAL FLOAT(126)
COMM FLOAT(126)
DEPTNO NUMBER(19)
Observation: EMPNO : NUMBER(4) is changed to NUMBER(19) - Is this default in Pandas df Precesion ? where we can get list of default values.
ENAME VARCHAR2(10) : -> Changed to CLOB
SAL NUMBER(7,2) : -> Changed to FLOAT(126) . How we can load with Same Precesion/Scale value.