出于开发目的,我尝试将数据上传到neo4j-community-2.2.0-M03。使用shell和cypher脚本从多个CSV文件中下载。使用与用于将数据成功上载到neo4j-2.1.7的完全相同的脚本。 Neo4j 2.1.7在9分钟内上传了201589节点和2163494个边缘。
Neo4j-2.2.0-M03正确上传前三种类型的节点(26k节点)但因此无法上传最后两个文件,返回:" NotInTransactionException:语句已关闭。"。
Cypher命令如下:
CREATE INDEX ON :Fingerprint(Code);
CREATE INDEX ON :Fingerprint(Size);
USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM 'mypath_to_file.csv'
as csvLine FIELDTERMINATOR '\t'
MATCH (m:Molecule {NSC: toInt(csvLine.NSC)})
MERGE (f:Fingerprint {Code: toInt(csvLine.Identifier), Size: toInt(csvLine.Distance)})
CREATE (m)-[:hasBit {Type: 'SCFP6', Atoms: csvLine.Atoms}]-> (f);
cvs文件中的数据如下所示:
NSC Identifier Distance Atoms Substructure
128 1 0 1 [*]C(=[*])[*]
128 0 0 2 [*]C
128 13 0 3 [*]=O
128 9 0 4 [*]N([*])[*]
128 3 0 5 [*][c](:[*]):[*]
128 17 0 12 [*]S[*]
128 1256995004 2 1 2 3 4 [*]N([*])C(=O)C
128 136627117 2 1 2 [*]C(=[*])C
128 1311071855 2 1 3 [*]C(=O)[*]
关于CSV数据上传,v2.1.7到2.2.0-M03有什么变化吗?这是一个已知的错误吗?
如果您需要示例文件和脚本的附加信息,请不要犹豫。
答案 0 :(得分:1)
你可以尝试这样做:
LOAD CSV WITH HEADERS FROM 'mypath_to_file.csv'
as csvLine FIELDTERMINATOR '\t'
RETURN count(*);
和
LOAD CSV WITH HEADERS FROM 'mypath_to_file.csv'
as csvLine FIELDTERMINATOR '\t'
RETURN csvLine
SKIP 25900;
查看数据或解析是否已关闭?也许在解析事务期间发生异常会导致事务回滚?
我会将您的MERGE
更改为:
MERGE (f:Fingerprint {Code: toInt(csvLine.Identifier)})
ON CREATE SET f.Size=toInt(csvLine.Distance)
答案 1 :(得分:0)
问题已在neo4j 2.2.0-RC01中解决。使用neo4j 2.1.7,在3分钟内完全加载20158节点和2163494个边缘,而9分钟则完全加载。