Как импортировать CSV в Neo4j и заменить нулевые значения значением по умолчанию? - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь импортировать два довольно похожих файла CSV, но у меня возникают проблемы при изменении значения NULL на значение по умолчанию. Пока это мой код:

Я пробовал объединяться и foreach. Но я не уверен, что использовал его правильно.

LOAD CSV WITH HEADERS FROM 'file:///Company.csv' AS row
FIELDTERMINATOR ';'
WITH toInteger(row.CompanyID) AS CID, row.CompanyName AS CompanyName, row.Street AS Street, 
row.PostalCodeCity AS PostalCodeCity, row.Country AS Country, row.MainPhone AS MainPhone, 
row.Website AS Website, row.VATnumber AS VATnumber, toInteger(row.MarketCode) AS MarketCode, 
toInteger(row.SecondaryCode) AS SecondaryCode, row.Market AS Market, row.Status AS Status
MERGE (c:Company {Street: coalesce(row.Street, "Unknown")})
MERGE (c:Company {PostalCodeCity: coalesce(row.PostalCodeCity, "Unknown")})
MERGE (c:Company {MainPhone: coalesce(row.MainPhone, "Unknown")})
MERGE (c:Company {Website: coalesce(row.Website, "Unknown")})
MERGE (c:Company {VATnumber: coalesce(row.VATnumber, "Unknown")})
MERGE (c:Company {MarketCode: coalesce(row.MarketCode, "Unknown")})
MERGE (c:Company {SecondaryCode: coalesce(row.SecondaryCode, "Unknown")})
Merge (c:Company {CID: CID})
RETURN count(c)

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

Прямо сейчас я получаю Neo.ClientError.Statement.SyntaxError

Neo.ClientError.Statement.SyntaxError: Variable `row` not defined (line 7, column 36 (offset: 479))
"MERGE (c:Company {Street: coalesce(row.Street, "Unknown")})"
                                    ^

1 Ответ

0 голосов
/ 01 октября 2019

Вы переименовываете переменные в WITH Statemt, но используете оригинальные переменные в слияниях ...

Попробуйте

LOAD CSV WITH HEADERS FROM 'file:///Company.csv' 
AS row
FIELDTERMINATOR ';'
WITH toInteger(row.CompanyID) AS CID, 
row.CompanyName AS CompanyName, row.Street AS 
Street, 
row.PostalCodeCity AS PostalCodeCity, row.Country AS 
Country, row.MainPhone AS MainPhone, 
row.Website AS Website, row.VATnumber AS VATnumber, 
toInteger(row.MarketCode) AS MarketCode, 
toInteger(row.SecondaryCode) AS SecondaryCode, 
row.Market AS Market, row.Status AS Status
MERGE (c:Company {Street: coalesce(Street, "Unknown")})
MERGE (c:Company {PostalCodeCity: coalesce(PostalCodeCity, "Unknown")})
MERGE (c:Company {MainPhone: coalesce(MainPhone, "Unknown")})
MERGE (c:Company {Website: coalesce(Website, "Unknown")})
MERGE (c:Company {VATnumber: coalesce(VATnumber, "Unknown")})
MERGE (c:Company {MarketCode: coalesce(MarketCode, "Unknown")})
MERGE (c:Company {SecondaryCode: coalesce(SecondaryCode, "Unknown")})
Merge (c:Company {CID: CID})
RETURN count(c)
...