簡體   English   中英

帶有自定義ID的Neo4j LOAD CSV

[英]Neo4j LOAD CSV with Custom IDs

我正在使用Neo4j 2.2.3,並嘗試使用Cypher的LOAD CSV導入CSV文件,如下所示:

PRODUCT_ID,PRODUCT_DESC,PRODUCT_TYPE
99,"A","X"
999,"B","X"
9999,"C","Y"
99999,"D","Y"

但是,我在使用自定義ID時遇到了困難。 Neo4j不導入它們。

PRODUCT_ID列是來自不同系統(我無法控制)的唯一ID,但可以說,它不是行號。 需要PRODUCT_ID才能匹配其他文件中的數據。

當我查看文件時,會看到所有字段:

LOAD CSV WITH HEADERS FROM 'file:///path/to/product.csv' AS row
RETURN row

當我選擇 PRODUCT_ID 之外的任何列時,情況也是如此:

LOAD CSV WITH HEADERS FROM 'file:///path/to/product.csv' AS row
RETURN row.PRODUCT_DESC

當我改用RETURN row.PRODUCT_ID ,會得到一個空表。

同樣,這不起作用:

LOAD CSV WITH HEADERS FROM 'file:///path/to/product.csv' AS row
CREATE (p:Product { id: toInt(row.PRODUCT_ID),
                    name: row.PRODUCT_DESC,
                    type: row.PRODUCT_TYPE })

我得到了具有說明和類型的產品,但是ID丟失了。 我需要ID才能將此CSV文件與其他文件進行匹配,但是我遇到了麻煩,希望對您有所幫助。 在文檔中,我沒有看到有關ID列的任何限制。

當我將PRODUCT_ID列從第一個位置移開時,它警告了第一個列將被忽略。 因此,如果我將PRODUCT_ID作為最后一列,則PRODUCT_DESC為空。 是否需要將行號作為CSV的第一列? 似乎很奇怪。

有什么建議么?

可能是這個問題嗎?

http://www.markhneedham.com/blog/2014/10/18/neo4j-load-csv-the-sneaky-null-character/

基本上,他的CSV中有NULL字符,這導致數據讀取不正確。

不知道這里是什么問題。 我將數據復制到junk.txt文件,並且能夠順利導入。

LOAD CSV WITH HEADERS FROM 'file://junk.txt' as csvLine FIELDTERMINATOR ',' return csvLine;

注意:也沒有FIELDTERMINATOR。

最初的問題詢問產品ID。

LOAD CSV WITH HEADERS FROM 'file://junk.txt' as csvLine FIELDTERMINATOR ',' return csvLine.PRODUCT_ID;

可能是文件開頭的兩個字節的字節順序標記(BOM)。

如果您刪除了它(在文本中不可見),它應該可以工作。

我不太確定問題出在哪里,但是我有一些建議可以嘗試。 您可以在字段名稱周圍加上反引號,如下所示:

LOAD CSV WITH HEADERS FROM 'file:///path/to/product.csv' AS row
CREATE (p:Product { id: toInt(row.`PRODUCT_ID`),
                    name: row.`PRODUCT_DESC`,
                    type: row.`PRODUCT_TYPE` })

您也可以嘗試在標頭周圍加上如下引號:

"PRODUCT_ID","PRODUCT_DESC","PRODUCT_TYPE"

當然,您可以刪除標題並按索引進行操作,盡管有點la腳。 一種使它更好的方法是:

LOAD CSV FROM 'file:///path/to/product.csv' AS row
WITH
  toInt(row[0]) AS product_id,
  row[1] AS product_desc,
  row[2] AS product_type
CREATE // etc...

那么,到底有什么用? 我從Linux系統中獲取文件,嘗試在Windows中導入它們並正確修改了行尾,但這是行不通的。 相反,我不得不將文件另存為ANSI,而不是UTF-8。 如果有人能告訴我重要的事情,我將不勝感激,因為該文檔明確指出文件應為UTF-8而不是ANSI,甚至在Windows上也是如此。 無論如何,現在可以使用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM