2015-12-02 50 views
1

LOAD CSV期间我将一个字段转换为整数与toInt,虽然我没有收到任何错误(和数据加载),该属性仍被视为一个字符串。LOAD CSV Neo4j toInt转换

下面是我正在运行的代码来填充数据库。我有一个小玩具数据集,你可以参考下面。

// Import the HS Cluster nodes 
USING PERIODIC COMMIT 10000 
LOAD CSV WITH HEADERS FROM "https://docs.google.com/spreadsheets/d/11f7-aEN-OURzzPY97Cm8vWZN1lNqYpSmCocNkzAoQe8/pub?gid=0&single=true&output=csv" as row 
WITH row 
MERGE (s:Student {sid:row.id}); 


// Import the contacts 
// THIS IS THE QUERY THAT I AM USING toINT 
USING PERIODIC COMMIT 10000 
LOAD CSV WITH HEADERS FROM "https://docs.google.com/spreadsheets/d/11f7-aEN-OURzzPY97Cm8vWZN1lNqYpSmCocNkzAoQe8/pub?gid=0&single=true&output=csv" as row 
WITH row 
MERGE (c:Contact {cid:row.cid, seqnum: toInt(row.seqnum)}); 


// Connect the next contacts together 
USING PERIODIC COMMIT 10000 
LOAD CSV WITH HEADERS FROM "https://docs.google.com/spreadsheets/d/11f7-aEN-OURzzPY97Cm8vWZN1lNqYpSmCocNkzAoQe8/pub?gid=0&single=true&output=csv" as row 
WITH row 
WHERE row.nextcid <> 'NA' 
MERGE (c:Contact {cid:row.cid}) 
MERGE (n:Contact {cid:row.nextcid}) 
MERGE (c)-[:NEXT]->(n); 

但是当我在另一个查询

// I expected this to work 
USING PERIODIC COMMIT 10000 
LOAD CSV WITH HEADERS FROM "https://docs.google.com/spreadsheets/d/11f7-aEN-OURzzPY97Cm8vWZN1lNqYpSmCocNkzAoQe8/pub?gid=0&single=true&output=csv" as row 
WITH row 
WHERE row.seqnum = 1 
MERGE (c:Contact {cid:row.cid}) 
MERGE (s:Student {sid:row.id}) 
MERGE (s)-[:HAS_CONTACT]->(c); 

引用属性的点,但这个产生(no changes, no rows)

然而,当我引用seqnum作为一个字符串,它可以作为预计

// but have to reference seqnum as a string 
USING PERIODIC COMMIT 10000 
LOAD CSV WITH HEADERS FROM "https://docs.google.com/spreadsheets/d/11f7-aEN-OURzzPY97Cm8vWZN1lNqYpSmCocNkzAoQe8/pub?gid=0&single=true&output=csv" as row 
WITH row 
WHERE row.seqnum = '1' 
MERGE (c:Contact {cid:row.cid}) 
MERGE (s:Student {sid:row.id}) 
MERGE (s)-[:HAS_CONTACT]->(c); 

我在想什么?

仅供参考,我正在运行neo4j 2.3.1的社区版本,并在OSX 10.9.5上运行。

任何帮助将不胜感激。

回答

3

在“预期它的工作”部分,你过滤性能在CSV文件中,而不是在节点上:

WHERE row.seqnum = 1 // this is still a string from your CSV file 

您转换的节点上seqnum属性,CSV文件保持不变。

尝试MATCH一个Contact节点,看看是否值转换为int的节点:

MATCH (c:Contact {cid: 'some_id_here', seqnum: 1}) 
RETURN c 
+0

我知道这是什么,我是超好看。谢谢 – Btibert3