def addLevelDb(self, levelDbDir): try: levelDb = leveldb.LevelDB(levelDbDir) try: print(levelDb.GetStats()) except: print("No Stats") columnHeadings = ["Key", "Value"] self.levelDbTableWidget.setColumnCount(2) self.levelDbTableWidget.setHorizontalHeaderLabels(columnHeadings) tabHeader = self.levelDbTableWidget.horizontalHeader() #tabHeader.setSectionResizeMode(QHeaderView.ResizeToContents) #tabHeader.setResizeMode(0, QtGui.QHeaderView.Stretch) #tabHeader.setResizeMode(1, QtGui.QHeaderView.ResizeToContents) rowNum = 0 for key, value in levelDb.RangeIter(): self.levelDbTableWidget.insertRow(rowNum) self.levelDbTableWidget.setItem(rowNum, 0, self.createItem(str(key))) self.levelDbTableWidget.setItem(rowNum, 1, self.createItem(str(value))) rowNum = rowNum + 1 print("Number of records dumped are ==> " + str(rowNum)) except: print("Attempting to repair DB") levelDb = leveldb.RepairDB(levelDbDir) levelDb2 = leveldb.LevelDB(os.path.join(levelDbDir, "lost")) try: print(levelDb2.GetStats()) except: print("No Stats") columnHeadings = ["Key", "Value"] self.levelDbTableWidget.setColumnCount(2) self.levelDbTableWidget.setHorizontalHeaderLabels(columnHeadings) tabHeader = self.levelDbTableWidget.horizontalHeader() #tabHeader.setSectionResizeMode(QHeaderView.ResizeToContents) #tabHeader.setResizeMode(0, QtGui.QHeaderView.Stretch) #tabHeader.setResizeMode(1, QtGui.QHeaderView.ResizeToContents) rowNum = 0 for key, value in levelDb2.RangeIter(): self.levelDbTableWidget.insertRow(rowNum) self.levelDbTableWidget.setItem( rowNum, 0, self.createItem(str(key.decode('utf-8', "ignore")))) self.levelDbTableWidget.setItem( rowNum, 1, self.createItem(str(value.decode('utf-8', "ignore")))) rowNum = rowNum + 1
#!/usr/bin/env python import leveldb import sys if len(sys.argv) < 2: raise Exception('Please give leveldb dir as argument') db = sys.argv[1] sys.stderr.write('Attempting to repair leveldb at {0}\n'.format(db)) leveldb.RepairDB(db) sys.stderr.write('Finished processing {0}\n'.format(db))
def DBRepair(self, db, db_uid, *args, **kwargs): db_path = self.databases['paths_index'][db_uid] leveldb.RepairDB(db_path) return success()
with open(outputFile + ".csv", 'w') as f: for key, value in levelDb2.RangeIter(): key2 = str(key, 'utf-8', 'ignore') keyd16 = key.decode('utf-8', "ignore") vald16 = value.decode('utf-8', 'ignore') newKey = removeChars(keyd16) newVal = removeChars(vald16) if len(str(newKey)) > 1 and len(str(newVal)) > 1: SQLitedb.InsertList("Leveldb", "key, value, byte_key, byte_value", '?, ?, ?, ?', [str(newKey), str(newVal), key, value]) f.write(str(newKey) + "," + str(newVal) + "\n") numRecords = numRecords + 1 print ("Number of records dumped are ==> " + str(numRecords)) except: print ("Attempting to repair DB") levelDb = leveldb.RepairDB(levelDbDir) levelDb2 = leveldb.LevelDB(os.path.join(levelDbDir, "lost")) try: print (levelDb2.GetStats()) except: print ("No Stats") numRecords = 0 with open(outputFile + ".csv", 'w') as f: for key, value in levelDb2.RangeIter(): key2 = str(key, 'utf-8', 'ignore') keyd16 = key.decode('utf-8', "ignore") vald16 = value.decode('utf-8', 'ignore') newKey = removeChars(keyd16) newVal = removeChars(vald16) if len(str(newKey)) > 1 and len(str(newVal)) > 1:
def repair_leveldb(db_path): leveldb.RepairDB(db_path) Logger.info("Repair leveldb: {}.".format(db_path))
def repair_db(self): leveldb.RepairDB(self.db_path)