예제 #1
0
파일: main.py 프로젝트: yongerq/mssql2mysql
def processData(mssqlConfig, mysqlConfig, logFile, tables):
    logging.basicConfig(filename=logFile,
                        filemode='a',
                        level=logging.INFO,
                        format='%(asctime)s: %(message)s',
                        datefmt='%Y-%m-%d %H:%M:%S')

    mysqlServer = mysqlConfig['host']
    mysqlPort = mysqlConfig['port']
    mysqlUsername = mysqlConfig['username']
    mysqlPassword = mysqlConfig['password']
    mysqlDB = mysqlConfig['db']
    mysqlHandle = DB.myHandle(mysqlServer, mysqlUsername, mysqlPassword,
                              mysqlDB, mysqlPort)

    print 'mysqlServer:' + mysqlServer + ' mysqlPort:' + str(
        mysqlPort) + ' mysqlUserName:'******'mysqlPassword:'******' mysqlDB:' + mysqlDB

    mssqlDriver = mssqlConfig['driver']
    mssqlServer = mssqlConfig['host']
    mssqlUsername = mssqlConfig['username']
    mssqlPassword = mssqlConfig['password']
    mssqlDB = mssqlConfig['db']
    mssqlPort = mssqlConfig['port']
    mssqlDSN = 'Driver={};Server={};Database={};Uid={};Pwd={};Port={};TDS_Version=8.0;'.format(
        mssqlDriver, mssqlServer, mssqlDB, mssqlUsername, mssqlPassword,
        mssqlPort)

    print 'mssqlDriver:' + mssqlDriver + ' mssqlServer:' + mssqlServer + ' mssqlUserName:'******'mssqlPassword:'******' mssqlDB:' + mssqlDB + ' mssqlPort:' + str(
        mssqlPort)

    mssqlHandle = DB.msHandle(mssqlDSN)

    mssqlUtil = MssqlUtil()
    mssqlUtil.setMssqlHandle(mssqlHandle.getCursor())
    dataTypes = Utils.getDataTypes()

    process = DataProcess()
    process.setDBHandle(mysqlHandle, mssqlHandle)
    process.setLogging(logging)

    for table in tables:
        msTable = table
        myTable = '{}_{}'.format(mssqlServer, table)

        pk = mssqlUtil.getPrimaryKey(table)

        # Auto create table
        createSql = mssqlUtil.genCreateTableSql(table, myTable, dataTypes)
        mysqlHandle.getCursor().execute(createSql)

        # Update/Insert records in destination DB that do not match source DB.
        logging.info("Preparing to insert/update records.")

        process.refreshData(myTable, msTable, pk)

        logging.info("Insert/update records complete.")

        # Delete records from destination DB that no longer exist in source DB.
        logging.info("Preparing to delete records.")

        process.deleteData(myTable, msTable, pk)

        logging.info("Delete records complete.")

    mssqlHandle.disconnect()
    mysqlHandle.disconnect()