【发布时间】:2014-11-02 16:41:25
【问题描述】:
我正在从多个 csv 文件迭代上传节点和边,每个节点类型一个。加载节点效果很好,但加载边缘并不总是有效。事实上,一些节点有数字作为标识符——如果是这样,那么该类型的所有节点都有数字——但是作为字符串加载,因此创建边失败。手动创建一个边,添加用双引号括起来的标识符效果很好。
如何在创建节点时强制 LOAD CSV 对这些标识符使用数字,或强制 LOAD CSV 用双引号将标识符括起来?
文章节点:
Type PMID ArticleTitle AbstractText Date Pages
Article 25358116 Synthesis of... Abstract 2014-10-30
Article 25358093 Putting theory... In this study... 2014-10-30 e1003910
问题节点:
Type Name Year Month Volume Issue
Issue J. Med. Chem., 2014 2014 Oct
Issue PLoS Comput. Biol., 2014, 10, 10 2014 Oct 10 10
Issue PLoS ONE, 2014, 9, 10 2014 9 10
边缘:
Name PMID
J. Med. Chem., 2014 25358116
PLoS Comput. Biol., 2014, 10, 10 25358093
密码命令:
CREATE INDEX ON :Article(PMID);
LOAD CSV WITH HEADERS FROM 'article.nodes' as csvLine FIELDTERMINATOR '\t' CREATE (:Article { PMID: toInt(csvLine.PMID), Title: csvLine.ArticleTitle, Date: csvLine.Date, Pages: csvLine.Pages, AbstractText: csvLine.Abstract }) return count(*);
CREATE INDEX ON :Journal(Abbreviate);
CREATE INDEX ON :Issue(Name);
LOAD CSV WITH HEADERS FROM 'issue.nodes' as csvLine FIELDTERMINATOR '\t' CREATE (:Issue { Name: csvLine.Name, Volume: csvLine.Volume, Issue: csvLine.Issue, Year: csvLine.Year, Month: csvLine.Month}) return count(*);
LOAD CSV WITH HEADERS FROM 'article.edges' as csvLine FIELDTERMINATOR '\t' MATCH (src:Issue { Name: csvLine.Name }), (tgt:Article { PMID: toInt(csvLine.PMID) }) CREATE (src) -[:hasArticle]-> (tgt) return count(*);
【问题讨论】: