【问题标题】:How to delete/create databases in Neo4j?如何在 Neo4j 中删除/创建数据库?
【发布时间】:2011-05-28 18:21:15
【问题描述】:

是否可以像在 MySQL 中一样在图形数据库Neo4j 中创建/删除不同的数据库?或者,至少,如何删除现有图的所有节点和关系以获得干净的测试设置,例如,使用类似于 rmrelrm 的 shell 命令?

【问题讨论】:

    标签: database neo4j nodes sql-delete relationships


    【解决方案1】:

    您可以使用 rm -rf 删除整个图形目录,因为 Neo4j 不会存储除此之外的任何内容:

    rm -rf data/*
    

    此外,您当然可以遍历所有节点并删除它们的关系和节点本身,但这对于测试而言可能成本太高...

    【讨论】:

    • 如果您遍历所有节点,最好让参考节点保留。
    • 图表目录在哪里?
    • 在 MacOSX 上使用自制软件:/usr/local/Cellar/neo4j/community-1.9.2-unix/libexec/data
    • 在执行此命令之前停止 Neo4j 服务器可能是个好主意。
    • Neo4J Web UI 的用户请注意:删除数据目录将清除您的命令行历史记录!要在保持 Web UI 命令行历史记录完整的同时安全地删除您的数据库,请使用rm data/graph.db
    【解决方案2】:

    对于需要干净图表来运行测试套件的任何其他人 - https://github.com/jexp/neo4j-clean-remote-db-addon 是一个很好的扩展,允许通过 REST 调用清除数据库。显然,不要在生产中使用它!

    【讨论】:

    【解决方案3】:

    在不同的 neo4j 实例上运行您的测试代码。

    1. 将neo4j 目录复制到新位置。使用它进行测试。 cd 进入新目录。
    2. 更改端口,以便您可以同时运行测试和正常使用它。更改端口打开conf/neo4j-server.properties 并将org.neo4j.server.webserver.port 设置为未使用的端口。
    3. 在设置时启动测试服务器。在拆解时执行./neo4j stoprm -rf data/graph.db

    有关详细信息,请参阅neo4j: How to Switch Database?docs

    【讨论】:

      【解决方案4】:

      在 2.0.0 -M6 中可以执行以下 Cypher 脚本来删除所有节点和关系:

      start n=node(*)
      match (n)-[r?]-()
      delete n,r
      

      【讨论】:

      • 不幸的是,这会在最新的 2.0.0 版本中产生错误:SyntaxException:问号不再用于可选模式 - 改为使用 OPTIONAL MATCH(第 1 行,第 26 列)==>“开始 n =node(*) 匹配 (n)-[r?]-() 删除 n,r"
      • 我不明白反对意见,因为答案清楚地表明 In 2.0.0 -M6,这是我回答问题时的最新版本,而其他提供的正确当前最新版本的答案。
      【解决方案5】:

      删除所有节点和关系的更简单命令:

      MATCH (n)
      OPTIONAL MATCH (n)-[r]-()
      DELETE n,r
      

      【讨论】:

      • 声明+1。但是请注意,仅仅因为您删除了所有节点,并不意味着您使用的标签完全被遗忘了。浏览器仍将显示所有标签。节点属性和关系标签也是如此。
      • @DilumRanatunga 1. 你知道如何让 neo 忘记标签吗? 2. 如果删除了节点,或者删除了关系的关系标签,节点属性如何保持?
      • 我不是指实际值;我的意思是属性名称本身。
      • 在数据库中可能不仅有节点和边,还有索引,要去掉这些比较困难。此外,我只是通过包括删除在内的大量重复测试设法破坏了数据库实例,看起来物理删除数据库文件并让 Neo4J 在重新启动时重新创建它们带来了性能的明显提升。
      • 我在 docker 容器中的 neo4j 上内存不足。
      【解决方案6】:

      在 Neo4j 2.0.0 中?不再支持。改用 OPTIONAL MATCH:

      START n=node(*)
      OPTIONAL MATCH (n)-[r]-()
      delete n,r;
      

      【讨论】:

        【解决方案7】:

        在 Neo4j 中创建新数据库

        在启动 neo4j 社区之前点击浏览选项

        然后选择一个不同的目录

        然后点击开始按钮。

        在该目录上创建新数据库

        【讨论】:

          【解决方案8】:

          快速而肮脏的方式,效果很好:

          bin/neo4j stop
          rm -rf data/
          mkdir data
          bin/neo4j start
          

          【讨论】:

            【解决方案9】:

            最简单的答案是:

            “重新开始”的最佳方式是

            • 移动到另一个空数据文件夹

            • 完全关闭 Neo4j
            • 清空旧数据文件夹
            • 重启 Neo4j 并将空文件夹设置为数据文件夹

            有一种方法可以删除所有节点和关系(如here 所述)

            MATCH (n)
            OPTIONAL MATCH (n)-[r]-()
            DELETE n,r
            

            【讨论】:

              【解决方案10】:

              你可以删除你的数据文件,如果你想通过这种方式,我建议只删除你的graph.db,例如。否则,您将弄乱您的身份验证信息。

              【讨论】:

                【解决方案11】:

                从 Neo4j 2.3,

                我们可以删除all nodes with relationships

                MATCH (n)
                DETACH DELETE n
                

                目前没有任何选项可以在 Noe4j 中创建多个数据库。您需要对 Neo4j 数据进行多次存储。见reference

                【讨论】:

                • 如果您不想诉诸文件系统的最佳答案。
                • 这种方法的问题是它不会删除约束和索引
                【解决方案12】:

                从版本 3 开始,我相信现在可以创建单独的数据库实例,因此它们的位置略有不同。

                参考:https://neo4j.com/developer/guide-import-csv/

                --into retail.db 显然是目标数据库,它不能包含现有数据库。

                在我的 Ubuntu 机器上,位置在:

                /var/lib/neo4j/data/databases 我目前只看到graph.db,我认为它必须是默认值。

                【讨论】:

                  【解决方案13】:

                  如果你有非常大的数据库,

                  `MATCH (n) DETACH DELETE n`
                  

                  会花费很多时间,并且数据库可能会卡住(我尝试使用它,但不适用于非常大的数据库)。所以这就是我在 linux 服务器上删除一个更大的 Neo4j 数据库的方法。

                  1. 首先停止正在运行的 Neo4j 数据库。

                    sudo neo4j stop

                  2. 其次,删除neo4j文件夹中data文件夹内的databases文件夹和transactions文件夹。那么在哪里可以找到 neo4j 文件夹?你可以通过执行which neo4j找到neo4j的可执行路径。检查通过该路径的 data 文件夹(它位于 neo4j 文件夹内)。进入 data 文件夹,您会看到 databasestransactions 文件夹。

                    rm -rf databases/rm -rf transactions/

                  3. 重启 Neo4j 服务器

                    sudo neo4j start

                  【讨论】:

                    猜你喜欢
                    • 2018-01-28
                    • 2014-06-12
                    • 1970-01-01
                    • 2011-10-02
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-06-17
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多