Javascript 我可以在单个查询中使用约束和索引将csv加载到neo4j吗?

Javascript 我可以在单个查询中使用约束和索引将csv加载到neo4j吗?,javascript,neo4j,Javascript,Neo4j,我试图将csv导入neo4j,但效果很慢。 所以我尝试使用“约束”来加速它 我的以下作品 'USING PERIODIC COMMIT \ LOAD CSV WITH HEADERS FROM {filepath} AS row WITH \ row limit 1000 \ MERGE (spot:Spot{id:row.id}) \ .....there are more line actually ... \ ' 但是,

我试图将csv导入neo4j,但效果很慢。 所以我尝试使用“约束”来加速它

我的以下作品

     'USING PERIODIC COMMIT \
      LOAD CSV WITH HEADERS FROM {filepath} AS row WITH \
      row limit 1000 \
      MERGE (spot:Spot{id:row.id}) \
      .....there are more line actually ... \
     '
但是,当我向查询添加“约束”(比如语法错误)时,它不起作用

     'CREATE CONSTRAINT ON (s:Spot) ASSERT s.id is UNIQUE;\
      USING PERIODIC COMMIT \
      LOAD CSV WITH HEADERS FROM {filepath} AS row WITH \
      row limit 1000 \
      MERGE (spot:Spot{id:row.id}) \
      .....there are more line actually ... \
     '
我尝试先运行约束,然后立即加载csv。但是下面说了一些错误

         var unique_str = ' CREATE CONSTRAINT ON (s:Spot) ASSERT s.id is UNIQUE \
                       CREATE CONSTRAINT ON (c:City) ASSERT c.id is UNIQUE \
                       CREATE CONSTRAINT ON (t:Tag) ASSERT t.id is UNIQUE; '
怎么了

一直有问题,请有人指出我的错误。 我该怎么办?
提前谢谢

我认为问题在于,如果使用
定期提交
,它必须是第一行,这就是为什么会出现语法错误。我要做的是单独创建一个约束,然后像第一次那样运行查询。

模式操作,例如创建约束和创建索引,必须在它们自己的事务中完成,而该操作是事务中唯一的语句

你用的是什么客户机?使用官方Javascript驱动程序,它看起来像这样:

var neo4j = require('neo4j-driver').v1;
var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j"));
var session = driver.session();
session.run("CREATE CONSTRAINT ON (s:Spot) ASSERT s.id is UNIQUE;");
session.run("CREATE CONSTRAINT ON (c:City) ASSERT c.id is UNIQUE;");
session.run("CREATE CONSTRAINT ON (t:Tag) ASSERT t.id is UNIQUE;");
session.run("USING PERIODIC COMMIT...");

session.run
将为每个语句创建一个隐式事务。

您的意思是,先运行约束,然后运行查询,然后将它们分开?是的,因为我不确定如果在同一个查询中使用,它们会因为周期性提交而多次运行。所以,最好将约束和导入查询分开。但是我在约束方面有问题,不能同时运行几个约束,我在上面添加了它们,你能指出它们有什么问题吗?THXY您尝试为Spot创建两次约束。去除one@TomažBratanič移除了一个,仍然无法工作:(我试图在nodejs后端使用neo4j。谢谢你的回答。