我使用的是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 })我得到了描述和类型的产品,但是I丢失了。我需要ID来匹配这个CSV文件与其他文件,但我是卡住了,并希望得到一些帮助。我还没有在文档中看到任何关于ID列的限制。
当我将PRODUCT_ID列从第一个位置移开时,它与当时的第一列被忽略这一警告一起工作。因此,如果我将PRODUCT_ID作为最后一列,则PRODUCT_DESC为null。是否有必要将行号作为CSV中的第一列?看上去很奇怪。
有什么建议吗?
发布于 2015-08-05 13:59:18
可能是这个问题吗?
http://www.markhneedham.com/blog/2014/10/18/neo4j-load-csv-the-sneaky-null-character/
基本上,他的CSV中有NULL字符,这导致数据被错误地读取。
发布于 2015-08-06 12:33:46
不知道这是什么问题。我将数据复制到一个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;
发布于 2015-08-06 20:23:13
它可能是(BOM)文件开头的两个字节。
如果您删除它(在文本中是不可见的),它应该可以工作。
https://stackoverflow.com/questions/31828803
复制相似问题