当前位置: 首页 > 知识库问答 >
问题:

Neo4j批处理插入器

何涵育
2023-03-14

我的批处理插入器有奇怪的问题。批处理插入器工作良好,但当我从该位置启动服务器时,CYPHER无法筛选属性。

Query“match(a)return a”返回所有节点。但当我尝试基于任何属性筛选它时,它不会返回任何行。查询匹配(a),其中a.name=“someone”return a返回任何内容。

如果我运行run SET命令来更新属性,那么我就能够很好地筛选它。看起来像是索引问题,但无法准确计算。

**Output of - `match(a) return a` -** 

╒══════════════════════════════╕
│a                             │
╞══════════════════════════════╡
│{}                            │
├──────────────────────────────┤

│{Company: "Neo Technology", ye│
│ar: 2013, Name: "Kenny Bastani│
│"}                            │
├──────────────────────────────┤
│{Company: "Neo Technology", ye│
│ar: 2010, Name: "Michael Hunge│
│r"}                           │
├──────────────────────────────┤
│{Company: "Heroku", year: 2011│
│, Name: "James Ward"}         │
├──────────────────────────────┤
│{Name: "Someone"}             │
├──────────────────────────────┤
│{Company: "Doe.com", year: "ni│
│netynine", Name: "John"}      │
└──────
**File -** 

    Name,Company,year

    "Kenny Bastani","Neo Technology",2013

     "Michael Hunger","Neo Technology",2010

     "James Ward","Heroku",2011

     "Someone",,

     "John","Doe.com","ninetynine"

**Batch Inserter-** 

    public void importNodes() throws IOException {
            FileInputStream fis = new FileInputStream(
                    "E:\\neo4j\\CSV_Import\\01.csv");
            InputStreamReader isr = new InputStreamReader(fis);
            BufferedReader br = new BufferedReader(isr);
            String line = null;

            File storeDir = new File("E:\\neo4j\\test_data1");
            FileUtils.deleteRecursively(storeDir);


            BatchInserter neoBatchInserter = BatchInserters.inserter(storeDir);

            Map properties = new HashMap();
            ArrayList headerMap = new ArrayList();

            BatchInserterIndexProvider indexProvider = new LuceneBatchInserterIndexProvider(
                    neoBatchInserter);

            BatchInserterIndex autoIndex = indexProvider.nodeIndex("node_auto_index",
                    MapUtil.stringMap("type", "exact"));

            autoIndex.setCacheCapacity( "Name", 10000 );

            neoBatchInserter.createDeferredSchemaIndex(Labels.Person).on("Name").create();

            String propertyName = "";

            boolean headerFlag = true;

            int counter = 0;

            while ((line = br.readLine()) != null) {

                String[] values = line.split(",");

                for (String value : values) {

                    if (headerFlag) {

                        headerMap.add(value);

                    } else {

                        propertyName = headerMap.get(counter);
                        properties.put(propertyName, value);

                    }

                    counter++;
                }

                System.out.println("New Node - " + properties);
                long node = neoBatchInserter.createNode(properties, Labels.Person);
                autoIndex.add(node, properties);
                autoIndex.flush();

                counter = 0;
                properties.clear();
                headerFlag = false;

            }

            indexProvider.shutdown();
            neoBatchInserter.shutdown();
        }

共有1个答案

沈龙光
2023-03-14

如果是索引问题,删除并重新创建索引可能会修复它。

 类似资料:
  • 问题内容: 我有一个dao,它基本上使用hibernate将记录插入到一​​个表中,该dao用标记为注释,并且我有一个服务,该服务会生成其他一些东西,然后调用我的dao。我的服务也标注了使用。 我叫服务循环。我在dao上的插入内容是否可以批量或一个接一个地工作?我如何确定它们可以批量工作?hibernateTransaction Manager是否管理批处理插入? 我正在使用Oracle DB。

  • 问题内容: 我需要将几亿条记录插入mysql db。我要一次插入一百万个。请在下面查看我的代码。它似乎很慢。有什么方法可以优化它吗? 问题答案: 我在mysql中遇到类似的性能问题,并通过在连接URL中设置useServerPrepStmts和rewriteBatchedStatements属性来解决。

  • 在我的项目中配置了以下内容: 加载文件时,我有重复的记录,但因为我配置了在下,Spring batch不应回滚记录,但仍将回滚记录。如果我从列表中删除,那么它将抛出异常。我们正在使用Spring批处理版本: 不希望回滚记录,但会回滚记录。

  • 问题内容: 我有责任将我们的代码从sqlite切换到postgres。我遇到麻烦的查询之一复制到下面。 当有重复的记录时,就会出现此问题。在此表中,两个值的组合必须唯一。我在其他地方使用了一些plpgsql函数来执行更新或插入操作,但是在这种情况下,我可以一次执行多个插入操作。我不确定如何为此编写存储的例程。感谢您提供的所有sql专家的所有帮助! 问题答案: 有 3个 挑战。 您的查询在表和之间没

  • Cassaforte具有插入批处理功能,可一次性将多行插入到cassandra CQL表中。 我最近切换到Alia,我想知道它是否提供相同的功能?我不能立即在留档中看到任何内容,并且(hayt/value…)似乎一次只支持单行插入。

  • 问题内容: 有没有解决方案通过hibernate在分区后的PostgreSQL表中批量插入?目前我遇到这样的错误… 我已经找到此链接http://lists.jboss.org/pipermail/hibernate- dev/2007-October/002771.html, 但我在网上找不到任何地方可以解决此问题或如何解决该问题 问题答案: 您可能想通过设置hibernate.jdbc.fac