neo4j批量导入三元组

python代码生成word.csv、relation.csv

# 生成map{word:id}
map = {}        # 词和他的id对应词典 注意id不要为数字 不然会错乱!!!
for tuplei in tuples:
    if not map.get(tuplei[0], 0):
        map[tuplei[0]] = tuplei[0]
    if not map.get(tuplei[1], 0):
        map[tuplei[1]] = tuplei[1]
logger.debug('map{word:id}已生成')

# 生成 words[[:ID, name, :LABEL]...]和words.csv
words = []
for key in map.keys():
    words.append([map.get(key), key, 'word'])
logger.debug('words[[:ID, name, :LABEL]...]已生成')
with open("words.csv", "w", newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow([":ID", "name", ":LABEL"])      # 先写入columns_name
    writer.writerows(words)     # 写入多行用writerows
logger.debug('words.csv已生成')

# 生成 relations[[:START_ID, :TYPE, :END_ID]...]和relations.csv
relations = []
for tuplei in tuples:
    relations.append([map.get(tuplei[0]), tuplei[2], map.get(tuplei[1])])
logger.debug('relations[[:START_ID, :TYPE, :END_ID]...]已生成')
with open("relations.csv", "w", newline='', encoding='utf-8') as csvfile1:
    writer = csv.writer(csvfile1)
    writer.writerow([":START_ID", ":TYPE", ":END_ID"])
    writer.writerows(relations)
logger.debug('relations.csv已生成')

linux 服务器导入流程
1.将生成的.csv放入import中
2.切换到bin目录,所有主从机停止neo4j并删除原有库(谨慎操作)

./neo4j stop
rm -rf ../data/databases/graph.db

3.主机执行导入操作

neo4j-import --into /root/neo4j-enterprise-3.2.13/data/databases/graph.db --nodes ../import/words.csv --relationships ../import/relations.csv

4.所有主从机启动neo4j

./neo4j start

5.浏览器输入http://IP:7474

猜你喜欢

转载自blog.csdn.net/AxeChen/article/details/85334972