Я пытаюсь написать скрипт на python для загрузки CSV-файлов в graphdb с помощью вызова процедуры apoc. Я пытаюсь сделать это динамичным. Итак, у меня есть имя функции CreateNodes (имя файла, метка), которая принимает csvfile и метку узла для создания NODE в graphdb для данного запроса
Мой код указан ниже
def CreateNodes(filename,label):
print(filename,label)
print(type(filename),type(label))
nodequery="""CALL apoc.periodic.iterate('CALL apoc.load.csv(filename) yield map as row return row','CREATE (p:label) SET p = row', {batchSize:10000, iterateList:true, parallel:true})"""
return nodequery
query=CreateNodes("test.csv","NODE1")
Я проверил мою функцию и имя файла, а параметр метки принимает передаваемое значение
query=CreateNodes("test.csv","NODE1")
test.csv NODE1
<class 'str'> <class 'str'>
но когда я собираюсь запустить graphdriver.run (запрос) для создания узла в graphdb
graphdriver.run(query)
Я получаю ошибку ниже
ClientError: ПроцедураCallFailed: не удалось вызвать процедуру «apoc.periodic.iterate»: вызвано: org.neo4j.cypher.internal.v3_5.util.SyntaxException: переменная «имя файла» не определена (строка 1, столбец 43 (смещение : 42))
возможно, я что-то упустил в запросе. На самом деле я также пробовал явное имя файла .csv в моем запросе apoc, тогда он работал. но я хочу передать имя файла и переменную метки в запросе шифра для получения результата
Я использую py2neo python driver для neo4j, и моя версия neo4j - 3.5.6, а моя версия библиотеки процедур apoc - 3.5.0.4