知识库

如何将 GrapheneDB 数据库导入 Neo4j Desktop

假设您已经拥有 GrapheneDB 数据库的 zip 文件。

目标是将整个数据库导入,而不是将数据从它提取到现有数据库中。

请先尝试使用这些说明,如果无法正常工作,请根据 GrapheneDB 数据库的 Neo4j 版本执行以下步骤。

在 Neo4j 3.5.x 中

在此版本中,每个 dbms 只有一个数据库,因此步骤更简单。

  1. 在 Neo4j Desktop 中,创建一个 3.5.x 版本的实例,但不要启动它。

  2. 管理该实例(从右上角的 …​ 按钮),并按 打开终端 按钮打开一个指向该实例主目录的终端窗口。

  3. 在终端中执行 cd data/database(如果您随后执行 ls,则目录应该为空)。

  4. 将 GrapheneDB zip 文件解压缩到此目录,确保结果为包含 neostore* 文件的 graph.db 文件夹。如果需要,将顶级目录重命名为 graph.db 以与默认图名称对齐(或相应地调整配置文件中的图名称)。

  5. 检查解压缩目录的拥有权权限。它们应该与您在 db 主目录中执行 ls -l 时看到的拥有权权限匹配。如果不匹配,您可能需要递归地更改文件的拥有权,以便 Neo4j Desktop 能够读取和写入它们:https://linuxize.com/post/linux-chown-command/

  6. 启动数据库。

在 Neo4j 4.x 中

Neo4j 4.x 允许每个 dbms 实例有多个数据库。因此,我们可以添加 GrapheneDB 数据库而不会替换任何其他数据库。

我们甚至可以添加到已经拥有数据库的现有 dbms 实例,并且这些数据库可能已经在运行。

您应该拥有一个压缩的数据库,并且您可能也拥有 transactions zip 文件。

  1. 在 Neo4j Desktop 中,创建一个相应版本的新 dbms 实例,或者确定一个现有数据库(其次要版本与 GrapheneDB 实例的次要版本匹配),您将在其中导入数据库。

  2. 管理该实例(从右上角的 …​ 按钮),并按 打开终端 按钮打开一个指向该实例主目录的终端窗口。

  3. 在终端中执行 cd data/databases。这里可能还有其他目录,对应于该实例上的其他数据库。

  4. 将 GrapheneDB zip 文件解压缩到此目录。扩展后的 zip 的顶级目录应该有一个唯一的名称,该名称符合 Neo4j 的命名规则:https://neo4j.ac.cn/docs/cypher-manual/current/syntax/naming/

  5. 检查解压缩目录的拥有权权限。它们应该与您在 dbms 主目录中执行 ls -l 时看到的拥有权权限匹配。如果不匹配,您可能需要递归地更改文件的拥有权,以便 Neo4j Desktop 能够读取和写入它们:https://linuxize.com/post/linux-chown-command/

  6. (仅当您包含 transactions zip 文件时)在终端中,返回到 Neo4j 实例的主目录并执行 cd data/transactions。这是每个数据库的交易存储位置。您应该看到每个数据库的目录。

  7. 将 transactions zip 文件解压缩到此目录。扩展后的 zip 的顶级目录应该有一个与您之前在步骤 4 中解压缩的数据库匹配的名称。

  8. 检查解压缩目录的拥有权权限。它们应该与您在 dbms 主目录中执行 ls -l 时看到的拥有权权限匹配。如果不匹配,您可能需要递归地更改文件的拥有权,以便 Neo4j Desktop 能够读取和写入它们:https://linuxize.com/post/linux-chown-command/

  9. 如果 Neo4j dbms 尚未启动,请启动它。

  10. 它启动后,登录并执行 :use system 切换到系统数据库,我们可以在其中执行数据库管理命令。

  11. 使用数据库的名称(用作步骤 4 和 7 中的目录名称)发出 CREATE DATABASE <dbname> 命令,将 <dbname> 替换为数据库名称。这将在系统 db 中为新数据库创建一个条目,该条目将使用从步骤 4 和 7 中解压缩的数据库和事务文件。

  12. 您可以使用 SHOW DATABASES 检查数据库是否已创建。

  13. 执行 :use <dbname>(替换为数据库名称)切换到该 db。