У меня проблема с огромными данными Users.xml
от Stackoverflow.Он имеет> 8 млн. Данных.У меня также есть posts.xml
, который содержит огромное количество данных.
Users.xml
= 2,49 ГБ
Posts.xml
= 58,3 ГБ
Я покажу связь моего сценария снизу вверх.
Метод over создает таблицу, если она не существует, и insertStatement получает строку для оператора выполнения.
def savingDataToDatabase(tableName, element):
createTable(tableName)
connection = sqlite3.connect("database.db", isolation_level=None)
c = connection.cursor()
if(tableName == "Users"):
insertStatement = sqlInsertStatement(tableName)
c.execute(insertStatement,([element["AccountId"], element["Reputation"], element["CreationDate"], element["CreationTime"], element["DisplayName"], element["LastAccessDate"], element["WebsiteUrl"], element["Location"], element["AboutMe"], element["Views"], element["UpVotes"], element["DownVotes"], element["Age"]]))
connection.commit()
connection.close()
processingUsersXML(element)
возвращает мне Dict с предварительно обработанными данными.
def processingDataForSQL(filename, element):
if filename == 'Users':
user = processingUsersXML(element)
savingDataToDatabase(filename, user)
def getDataFromXml(filename):
for evt, elem in iterparse('/../usws/stackoverflowDataScience/dumpData/'+str(filename)+'.xml', events=('end',)):
if elem.tag == 'row':
element_fields = elem.attrib
processingDataForSQL(filename, element_fields)
elem.clear()
def chosenXMLFile():
getDataFromXml('Users')
getDataFromXml('Posts')
chosenXMLFile()
Надеюсь, вы, ребята, можете помочь.Это займет много времени.Это работает, но это медленно, как ад.Я не нашел ни одного сообщения, которое мне помогло.Я видел сообщение, но оно не очень помогло, и я был бы признателен, если бы вы могли показать мне по моему коду, где я могу изменить его.
С наилучшими пожеланиями
JoshED