Получение MethodCallFailed: не удалось вызвать процедуру: вызвано: org.neo4j.cypher.internal.v3_5.util.SyntaxException: - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь динамически загрузить узел из CSV-файла в neo4j graphdb.Поэтому я разрабатываю сценарий.Вот мой код

def CreateNodes(filename,label):
    print(filename,label)
    print(type(filename),type(label))
    path=nodesourcefolder+filename
    print(path)
    #filestring=nodesourcefolder+filename
    if(isfile(path)==True):
        print("valid")
        #nodequery="""CALL apoc.periodic.iterate('CALL apoc.load.csv(%s) yield map as row return row','CREATE (p:%s) SET p = row', {batchSize:10000, iterateList:true, parallel:true})"""%(path,label)
        nodequery="""CALL apoc.periodic.iterate('CALL apoc.load.csv("""+path+""") yield map as row return row','CREATE (p:"""+label+""") SET p = row', {batchSize:10000, iterateList:true, parallel:true})"""

        print(nodequery)
    return nodequery   

query=CreateNodes("test.csv","myNode")
graphdriver.run(query)

переменная запроса дает мне значение test.csv MyNode

out put

<class 'str'> <class 'str'>
/Users/kalyan.admin/NEO4J_HOME/import/test.csv
valid
CALL apoc.periodic.iterate('CALL apoc.load.csv(/Users/kalyan.admin/NEO4J_HOME/import/test.csv) yield map as row return row','CREATE (p:myNode) SET p = row', {batchSize:10000, iterateList:true, parallel:true})

, когда я собираюсь запустить драйвер графа.run (query)

Я получаю нижеуказанную ошибку

**ProcedureCallFailed: Failed to invoke procedure `apoc.periodic.iterate`: Caused by: org.neo4j.cypher.internal.v3_5.util.SyntaxException: Invalid input 'U': expected '*' or '/' (line 1, column 44 (offset: 43))**

Я уже получаю имя пути строкового файла и значение метки, когда я собираюсь передать имя файла, имя метки в функцию Createnode.Но мой драйвер графа не работает для создания узлов

Пожалуйста, помогите мне разобраться с этим.Я попытался выполнить операцию с двумя узлами, одна из них теперь закомментирована, но все эти запросы дают мне тот же результат после запуска Graphdriver

1 Ответ

1 голос
/ 08 июля 2019

У вас есть проблема с синтаксисом в вашем запросе шифра, путь к файлу должен быть строкой.

Это недопустимо:

CALL apoc.periodic.iterate(
  'CALL apoc.load.csv(/Users/kalyan.admin/NEO4J_HOME/import/test.csv) yield map as row return row',
  'CREATE (p:myNode) SET p = row', 
  {batchSize:10000, iterateList:true, parallel:true}
)

В то время как это (обратите внимание на двойнойцитаты вокруг пути):

CALL apoc.periodic.iterate(
  'CALL apoc.load.csv("/Users/kalyan.admin/NEO4J_HOME/import/test.csv") yield map as row return row',
  'CREATE (p:myNode) SET p = row', 
  {batchSize:10000, iterateList:true, parallel:true}
)
...