Пример #1
0
    def LoadSourceToStaging(self, filePath, sinkDbConnectionString,
                            sourceTableNames, extension):
        try:
            objList = []
            dbFiles = self.getSortesListofFiles(filePath)
            sourceTableNameList = sourceTableNames.split(",")

            # logging.info('sourceTableNameList:'+ str(sourceTableNameList))
            # validate data fetched from configuration file
            if (not filePath):
                raise ValueError('Source File path is empty!')
            elif (not sinkDbConnectionString):
                raise ValueError('Sink DB connection string is empty!')
            elif (not sourceTableNames):
                raise ValueError('Source Table Names is empty!')
            elif (not dbFiles or len(dbFiles) == 0):
                raise ValueError('No Db files present!')

            # perform transfer of data from source db to sink db
            for sourceTableName in sourceTableNameList:
                obj = Fetcher()
                isCleaned = 0
                for dbfile in dbFiles:
                    if str(dbfile) in skippedDBList:
                        continue
                    dbfile = filePath + dbfile
                    sourcedbconnectionstring = 'sqlite:///' + dbfile

                    if (isCleaned == 0):
                        obj.cleansink(sourcedbconnectionstring,
                                      sourceTableName, sinkDbConnectionString)
                        isCleaned = 1
                    # obj.transferSourceToSink(sourcedbconnectionstring, sourceTableName, sinkDbConnectionString, dbfile)
                    objArgs = {
                        'sourceDbString': sourcedbconnectionstring,
                        'tableName': sourceTableName,
                        'sinkDbSring': sinkDbConnectionString,
                        'dbName': dbfile
                    }
                    objList.append(objArgs)
            obj = Fetcher()
            p = Pool(5)
            p.map(obj.transferSourceToSink, objList)
            p.close()
            p.join()

        except Exception as e:
            logging.basicConfig(filename='Fetcher.log', level=logging.ERROR)
            logging.error('There is an exception in the code FetcherPlumber!')
            logging.error(e)
            logging.error(traceback.format_exc())
            raise
Пример #2
0
    def test_cleansink(self):
        try:
            sourcedbconnectionstring = 'sqlite:///../../ContentData/eb99f209f9c34ba192f6e695aeb37e4f.sqlite3'

            sourceTableName = 'Content_contentnode'

            fetchObj = Fetcher()
            fetchObj.cleansink(sourcedbconnectionstring, sourceTableName,
                               self.sinkDbConnectionString)
            self.assertTrue(True)
        except Exception as e:
            print(e)
            self.assertFalse(True,
                             'There was an exception while cleaning the sink')
Пример #3
0
    def LoadSourceToStaging(self, filePath,sinkDbConnectionString,sourceTableNames,extension):
        try:

            dbFiles = self.fetchFilesFromDirectory(filePath, extension)
            sourceTableNameList = sourceTableNames.split(",")

            # validate data fetched from configuration file
            if (not filePath):
                raise ValueError('Source File path is empty!')
            elif (not sinkDbConnectionString):
                raise ValueError('Sink DB connection string is empty!')
            elif (not sourceTableNames):
                raise ValueError('Source Table Names is empty!')
            elif (not dbFiles or len(dbFiles) == 0):
                raise ValueError('No Db files present!')

            # perform transfer of data from source db to sink db
            for sourceTableName in sourceTableNameList:
                obj = Fetcher()
                isCleaned = 0

                for dbfile in dbFiles:

                    dbfile=filePath+dbfile
                    sourcedbconnectionstring = 'sqlite:///' + dbfile

                    if (isCleaned == 0):
                        obj.cleansink(sourcedbconnectionstring, sourceTableName, sinkDbConnectionString)
                        isCleaned = 1

                    obj.transferSourceToSink(sourcedbconnectionstring, sourceTableName, sinkDbConnectionString)

        except Exception as e:
            logging.basicConfig(filename='Fetcher.log', level=logging.ERROR)
            logging.error('There is an exception in the code FetcherPlumber!')
            logging.error(e)
            logging.error(traceback.format_exc())
            raise