将flat csv转换为batch_importer

时间:2015-01-16 17:22:16

标签: java csv neo4j cypher data-import

我尝试使用Neo4j csv batch-importer上传大型csv(~20 mil线路)。我一直坚持如何解析csv才能使用导入程序。这就是csv的样子:

CUSTOMER_NAME,TRANSACTION_DATE,TRANSACTION_NO,TRANSACTION_TYPE,COMPANY_TYPE,COMPANY_NAME,STREETNUM,STREETNAME,CITY,STATE,ZIPCODE

图形结构如下 - 我在浏览器中创建图形(这么多行太慢了):

MERGE (state:STATE{STATE: {line.STATE}})                  
MERGE (company:COMPANY{COMPANY_NAME: line.COMPANY_NAME, COMPANY_TYPE: line.COMPANY_TYPE, STREETNUM: line.STREETNUM, STREETNAME: line.STREETNAME}) 
MERGE (customer:CUSTOMER{CUSTOMER_NAME: line.CUSTOMER_NAME})                       
MERGE (zipcode:ZIPCODE{ZIPCODE: line.ZIPCODE})
MERGE (customer)-[:TRANSACTION{TRANSACTION_NO: line.TRANSACTION_NO, TRANSACTION_TYPE: line.TRANSACTION_TYPE}]->(company)-[:LOCATION]-(zipcode)
MERGE (state)-[:CITY{CITY: line.STATE}]-(zipcode)

batch-importer需要使用多少csv?我可以用两个csvs(nodes / rels)重新创建这个图形结构吗?如果是这样,我对这些特定csvs的结构感到困惑。例如:

nodes.csv: 
COMPANY:string:COMPANY,l:label,COMPANY:string:COMPANY_NAME,COMPANY:string:COMPANY_TYPE,COMPANY:string:STREETNUM,COMPANY:string:STREETNAME

^我在哪里包含其他节点?

rels.csv
STATE:string:STATE,ZIPCODE:string:ZIPCODE,CITY,CITY:string:CITY

^如何包含完整路径(2 + rels)或多个关系?

1 个答案:

答案 0 :(得分:0)

neo4j批处理导入程序要求您将节点和边缘放在单独的csv文件中。 我建议您处理原始文件以生成nodes.csv和edges.csv文件,其中只包含每个文件中的节点和边缘。

使用导入器时,您还可以为节点和边指定多个文件,例如: import.bat test.db "nodes1.csv,nodes2.csv" "edges1.csv,edges2.csv"

希望有所帮助。