我正在尝试使用以下查询将从我的SQL Server导出的大量数据作为csv文件加载到neo4j中:
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:e:/temp/sql_backup/events.csv" AS csvLine
MERGE (dtStart:Date { Name: REPLACE (SUBSTRING(csvLine.VT_Start,0,10),"-","")})
MERGE (dtEnd:Date { Name: REPLACE (SUBSTRING(csvLine.VT_End,0,10),"-","")})
MERGE (ev:Event { EventId : csvLine.EventID})
ON CREATE SET ev = {
EventId : csvLine.EventID,
TagId : csvLine.TagID,
EventTypeId : csvLine.EventTypeID,
IntervalIdentifier : csvLine.AlarmID,
VT_Start : csvLine.VT_Start ,
VT_End : csvLine.VT_End,
Suppressed : csvLine.Suppressed,
system_messagetypename : csvLine.system_messagetypename,
system_inputname : csvLine.system_inputname,
system_spare1 : csvLine.system_spare1,
Priority : csvLine.Priority,
Console : csvLine.Console,
Operator : csvLine.Operator,
Message : csvLine.Message,
Parameter : csvLine.Parameter,
FromValue : csvLine.FromValue,
ToValue : csvLine.ToValue,
UnitOfMeasure : csvLine.UnitOfMeasure,
Limit : csvLine.Limit,
Value : csvLine.Value,
User1 : csvLine.User1,
BlockName : csvLine.BlockName }
MERGE (al:Alarm{ Name: csvLine.AlarmID})
MERGE (pr:Priority{ Name: csvLine.Priority})
MERGE (con:Console{ Name: csvLine.Console })
MERGE (op:Operator{ Name: csvLine.Operator })
MERGE (prm:Parameter{ Name: csvLine.Parameter })
MERGE (uom:UOM{ Name: csvLine.UnitOfMeasure })
MERGE (user:User{ Name: csvLine.User1 })
MERGE (blk:Block{ Name: csvLine.BlockName })
MERGE (tag:Tag{ TagId: csvLine.TagID })
MERGE (evt:EventType{ EventTypeID: csvLine.EventTypeID })
CREATE UNIQUE (con)<-[:FOR_CONSOLE]-(ev)-[:HAS_ALARM]->(al)
CREATE UNIQUE (op)<-[:FOR_OPERATOR]-(ev)-[:HAS_PRIORITY]->(pr)
CREATE UNIQUE (user)<-[:FOR_USER]-(ev)-[:HAS_UOM]->(uom)
CREATE UNIQUE (blk)<-[:HAS_BLOCK]-(ev)-[:HAS_EVENT_TYPE]->(evt)
CREATE UNIQUE (ev)-[:FOR_TAG]->(tag)
CREATE UNIQUE (dtStart)<-[:DATE_VT_START]-(ev)-[:FOR_TAG]->(tag)-[:DATE_VT_END]->(dtEnd)
我看到此查询运行了一段时间,我收到如下错误:
我查看了数据目录以检查是否有任何日志可以解释更多细节,但我也找不到任何生成的日志。
neo4j documents讨论了如何编辑conf/neo4j-server.properties
但我在neo4j目录中看不到config
文件夹或logs
,如下所示。 < / p>
我在根文件夹中看到的日志只有nioneo_logical.log, tm_tx_log, active_tx_log
有人可以解释一下如何在neo4j 2.1.1中设置调试日志记录,以便我可以看到导致此错误的内容。我怀疑可能是我的笔记本电脑的可用内存不足,所以想知道是否有人认为neo4j在RAM耗尽时崩溃了。
另外我注意到一些数据是在抛出错误之前创建的,但是没有创建关系查询,所以查询本身有什么问题吗?或其导致不创建关系的错误。
编辑1:
BTW neo4j 2.1.1下载发生了什么?我再也没有在neo4j网站上找到它了!
编辑2:
我下载了最新的2.1.2版本,并尝试再次运行查询并登陆同一个问题。我认为我有点问题,periodic commit
没有用,因为它在我看来,查询首先创建所有事件节点,然后开始运行创建关联。
我将事件的大小减少到了5000并且让它工作了,但是当我将它增加到100000时它再次崩溃并且数据库中有30000多个事件没有关联。
我的结论是:我的查询不正确,或处理Periodic提交的方式不正确。这样,当数据集很大时,我们将耗尽物理RAM。
编辑3:
以下是Shell的输出,其中第一个查询运行,因为它没有任何Create语句。
如果文件大小不大,则从浏览器窗口运行相同。
答案 0 :(得分:0)
在日志中找不到任何错误的原因是Neo4j浏览器中长时间运行的查询超时为60秒。这并不意味着查询实际上失败了,实际上它将运行完成。
要测试长时间运行的查询,请使用Neo4j Shell,它没有超时。