Neo4J ClientError.Statement.SyntaxError - PullRequest
2 голосов
/ 14 июня 2019

Я получаю Neo.ClientError.Statement.SyntaxError при загрузке данных из файла CSV.

Neo.ClientError.Statement.SyntaxError: Неверный ввод 'h': ожидается «I / I» (строка 5, столбец 3 (смещение: 189)) «Объединить (Zip_Code: Zip_Code {code: row.zip_cd, введите: 'location'}) "

Вот мой запрос:

 Using Periodic Commit
LOAD CSV WITH HEADERS FROM "file:///DOL_data_whd_whisard_reduced.csv" AS row
Merge (State_Code:State_Code {code: row.st_cd})
    where not row.st_cd is null

Merge (Zip_Code:Zip_Code {code: row.zip_cd,type:'location'})
    where not row.zip_cd is null
Merge (Zip_Code)-[:located_in]->(State_Code)

В csv есть несколько пустых записей, и поэтому я использовал не нуль, но это выдает ошибку как:

Кто-нибудь может мне помочь из этого?

1 Ответ

2 голосов
/ 14 июня 2019

Вы получаете сообщение об ошибке, потому что вы используете WHERE с предложением MERGE. WHERE нельзя использовать с MERGE.

Вы можете изменить свой запрос, чтобы удалить синтаксическую ошибку следующим образом:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///DOL_data_whd_whisard_reduced.csv" AS row
WITH row
WHERE NOT row.st_cd IS NULL AND NOT row.zip_cd IS NULL
MERGE (state_code:State_Code {code: row.st_cd})
MERGE (zip_code:Zip_Code {code: row.zip_cd, type:'location'})
MERGE (zip_code)-[:located_in]->(state_code)

Примечание:

  1. Эта запись будет пропущена, если один из st_cd или zip_cd равен NULL.
  2. Не рекомендуется использовать более одного MERGE в одном запросе, рассмотрите написание 3 отдельных запросов для этого.

Рекомендуемый метод:

Коды состояний загрузки:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///DOL_data_whd_whisard_reduced.csv" AS row
WITH row
WHERE NOT row.st_cd IS NULL 
MERGE (state_code:State_Code {code: row.st_cd})

Почтовые индексы загрузки:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///DOL_data_whd_whisard_reduced.csv" AS row
WITH row
WHERE NOT row.zip_cd IS NULL
MERGE (zip_code:Zip_Code {code: row.zip_cd, type:'location'})

Создание связей State-Zip:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///DOL_data_whd_whisard_reduced.csv" AS row
WITH row
WHERE NOT row.st_cd IS NULL AND NOT row.zip_cd IS NULL
MATCH (state_code:State_Code {code: row.st_cd})
MATCH (zip_code:Zip_Code {code: row.zip_cd, type:'location'})
MERGE (zip_code)-[:located_in]->(state_code)
...