Met Python van SQL Server naar Oracle

Plse find enclosed a script to write records from SQL Server to Oracle:

import pyodbc
import datetime

conn = pyodbc.connect('DSN=SQLServer;UID=sa;PWD=**')
conntarget = pyodbc.connect('DSN=Rekendoos;UID=hr;PWD=**')
table_name = 'MIGRATED_DIVORCE_SETTLEMENT__C'

cursor = conn.cursor()
cursortarget = conntarget.cursor()

cursor.execute('select * from Rapportage.' + tabel)
columns = [column[0] for column in cursor.description]
kolommen = ''
for x in range(len(columns) - 1):
    kolommen = kolommen + columns[x] + ', '
kolommen = kolommen + columns[len(columns) - 1]
results = [columns] + [row for row in cursor.fetchall()]

zoek_query = "select count(table_name) from user_tables where lower(table_name)=lower('" + table_name + "')"
cursortarget.execute(zoek_query)
if cursortarget.fetchone()[0]== 1:
    cursortarget.execute("drop table " + table_name )

stmt = 'CREATE TABLE "HR"."MIGRATED_DIVORCE_SETTLEMENT__C" ' \
+   '(	"ID" CLOB, ' \
+   '	"BPP65_AMOUNT__C" NUMBER,' \
+   '	"BPP67_AMOUNT__C" NUMBER, ' \
+   '	"BPP67_VPL_AMOUNT__C" NUMBER, ' \
+   '	"END_DATE_SETTLEMENT_PERIOD__C" DATE, ' \
+   '	"PENSION_SCHEME_ID__C" CLOB, ' \
+   '	"PERSON_ID_1__C" CLOB, ' \
+   '	"PERSON_ID_2__C" CLOB, ' \
+   '	"PROVIDER_ID__C" CLOB, ' \
+   '	"REGISTRATION_DATE__C" DATE, ' \
+   '	"SEND_DATE_TO_CORE__C" DATE, ' \
+   '	"SETTLEMENT_DATE__C" DATE, ' \
+   '	"START_DATE_RELATIONSHIP__C" DATE,' \
+   '	"START_DATE_SETTLEMENT__C" CLOB,' \
+   '	"VERSION_NUMBER_SETTLEMENT__C" CLOB, ' \
+   '	"VOP65_AMOUNT__C" NUMBER, ' \
+   '	"VOP67_AMOUNT__C" NUMBER, ' \
+   '	"VOP67_VPL_AMOUNT__C" NUMBER,' \
+   '	"VPREP__C" NUMBER, ' \
+   '	"VOPHOOG__C" NUMBER, ' \
+   '	"VTOP_TOT_AOW__C" NUMBER, ' \
+   '	"CREATEDBYID" CLOB, ' \
+   '	"CREATEDDATE" CLOB, ' \
+   '	"LASTMODIFIEDBYID" CLOB, ' \
+   '	"LASTMODIFIEDDATE" CLOB' \
+   '   ) '
cursortarget.execute(stmt)

for i in range(1,len(results)):
    Sql_insert_query1 = "INSERT INTO " + table_name + "  (" + kolommen + ") VALUES (" 
    Sql_insert_query2 = ''
    for j in range(len(columns)):
        uitkomst = results[i][j]
        if isinstance(uitkomst, str):
            uitkomst = uitkomst.replace("'"," ") 
            uitkomst = "\'" + uitkomst + "\'"
        if uitkomst is None:
            uitkomst = ''
            uitkomst = "\'" + uitkomst + "\'"
        if isinstance(uitkomst, (int, float)):
            uitkomst = str(uitkomst)
        if isinstance(uitkomst, (datetime.date, datetime.datetime) ):
#            print(str(j) + 'date')
            uitkomst = str(uitkomst)
            uitkomst = uitkomst[0:10]
            uitkomst = "to_date('" + uitkomst + "','yyyy-mm-dd')"
        Sql_insert_query2 = Sql_insert_query2  + uitkomst 
        if j < int(len(columns)) - 1:
            Sql_insert_query2 = Sql_insert_query2 + ", "
    Sql_insert_queryn =  ")"
    Sql_insert_query = Sql_insert_query1+Sql_insert_query2+Sql_insert_queryn
    if i % 1000 == 0:
        print(str(i) + ' Rijen gelezen')
        conntarget.commit()
#    print(Sql_insert_query)
    cursortarget.execute(Sql_insert_query)
conntarget.commit()

print('Lezen gereed')
cursor.close()
conntarget.close()




Here, the results are written to a list.

Door tom