У меня возникли проблемы с импортом очень большого файла XML с 36196662 строк. Я пытаюсь создать базу данных Neo4j Graph этого XML-файла с Py2neo мой XML-файл выглядеть:Импорт большого файла xml в Neo4j с Py2neo
и мой код Python импортировать XML-данные в Neo4j как то:
from xml.dom import minidom
from py2neo import Graph, Node, Relationship, authenticate
from py2neo.packages.httpstream import http
http.socket_timeout = 9999
import codecs
authenticate("localhost:7474", "neo4j", "******")
graph = Graph("http://localhost:7474/db/data/")
xml_file = codecs.open("User_profilesL2T1.xml","r", encoding="latin-1")
xml_doc = minidom.parseString (codecs.encode (xml_file.read(), "utf-8"))
#xml_doc = minidom.parse(xml_file)
persons = xml_doc.getElementsByTagName('user')
label1 = "USER"
# Adding Nodes
for person in persons:
if person.getElementsByTagName("id")[0].firstChild:
Id_User=person.getElementsByTagName("id")[0].firstChild.data
else:
Name="NO ID"
print ("******************************USER***************************************")
print(Id_User)
print ("*************************")
if person.getElementsByTagName("name")[0].firstChild:
Name=person.getElementsByTagName("name")[0].firstChild.data
else:
Name="NO NAME"
# print("Name :",Name)
print ("*************************")
if person.getElementsByTagName("screen_name")[0].firstChild:
Screen_name=person.getElementsByTagName("screen_name")[0].firstChild.data
else:
Screen_name="NO SCREEN_NAME"
# print("Screen Name :",Screen_name)
print ("*************************")
if person.getElementsByTagName("location")[0].firstChild:
Location=person.getElementsByTagName("location")[0].firstChild.data
else:
Location="NO Location"
# print("Location :",Location)
print ("*************************")
if person.getElementsByTagName("description")[0].firstChild:
Description=person.getElementsByTagName("description")[0].firstChild.data
else:
Description="NO description"
# print("Description :",Description)
print ("*************************")
if person.getElementsByTagName("profile_image_url")[0].firstChild:
Profile_image_url=person.getElementsByTagName("profile_image_url")[0].firstChild.data
else:
Profile_image_url="NO profile_image_url"
# print("Profile_image_url :",Profile_image_url)
print ("*************************")
if person.getElementsByTagName("friends_count")[0].firstChild:
Friends_count=person.getElementsByTagName("friends_count")[0].firstChild.data
else:
Friends_count="NO friends_count"
# print("Friends_count :",Friends_count)
print ("*************************")
if person.getElementsByTagName("url")[0].firstChild:
URL=person.getElementsByTagName("url")[0].firstChild.data
else:
URL="NO URL"
# print("URL :",URL)
node1 = Node(label1,ID_USER=Id_User,NAME=Name,SCREEN_NAME=Screen_name,LOCATION=Location,DESCRIPTION=Description,Profile_Image_Url=Profile_image_url,Friends_Count=Friends_count,URL=URL)
graph.merge(node1)
Моя проблема в том, когда я запускаю код, это займет много времени, чтобы импортировать этот файл почти неделю, чтобы сделать это, так что если кто-нибудь может помочь мне импортировать больше данных быстрее, чем я буду очень благодарен ,
NB: Моя конфигурация ноутбук: 4Gb RAM, 500Gb жесткий диск, i5
Спасибо Санчо за ваш ответ, но я не знаю, как это сделать, если вы можете предложить мне код, чтобы сделать это, было бы очень приятно. –
Я только что отредактировал свой предыдущий ответ на примере. Я надеюсь, что это помогает. – sancho
Большое спасибо Sancho за вашу помощь –