导入数据

有多种方法可以将文件中的数据导入 Neo4j 实例。本页描述了将数据导入运行在 Kubernetes 集群上的 Neo4j 实例的最常用方法。

将数据导入 Kubernetes 上的 Neo4j

Neo4j Helm chart 将 /import 配置为 Neo4j 的 import 目录,如默认文件位置中所述。您将所有要导入的文件都放在此卷中。

要将数据从 CSV 文件导入 Neo4j,请使用命令 neo4j-admin database import 或 Cypher 查询 LOAD CSV

  • neo4j-admin database import 命令可用于将大量数据批量导入先前未使用的数据库中,并且每个数据库只能执行一次。

  • LOAD CSV Cypher 语句可用于将小型到中型 CSV 文件导入现有数据库。LOAD CSV 可以根据需要多次运行,并且不需要空数据库。有关简单示例,请参见入门指南 → 导入数据

根据您的 Neo4j 配置,某些方法支持从远程位置(例如,使用 HTTP 或从云对象存储获取)获取要导入的数据。因此,并非总是需要将源数据文件放置在 Neo4j 的 import 目录中。

配置导入卷挂载

/import 卷挂载的默认配置是共享 /data 卷挂载。通常,这已足够,无需在 Helm 部署的 values.yaml 文件中明确配置 import 卷。有关配置 Neo4j Helm 部署的卷挂载的完整详细信息,请参见卷挂载和持久卷

此示例显示如何配置 /import 以使用默认 StorageClass 的动态预置持久卷

volumes:
  import:
    mode: "defaultStorageClass"
    defaultStorageClass:
      requests:
        storage: 100Gi

使用 kubectl cp 将文件复制到 import

可以使用 kubectl cp 将文件复制到 import 卷。此示例显示如何将本地目录 my-files/ 复制到命名空间 default 中,发布名称为 my-graph-db 的 Neo4j 实例的 /import/files-1 目录。

kubectl cp my-files/ default/my-graph-db-0:/import/files-1

# Validate: list the contents of /import/files-1
kubectl exec my-graph-db-0 -- ls /import/files-1

除了使用 kubectl cp,数据还可以通过以下方式加载到 /import 目录:

  • 使用额外的容器或 initContainer 来加载数据。

  • 使用 kubectl exec 运行命令来加载数据。

  • 挂载已填充数据的卷。

    数据必须放置在卷的 /import 目录中。

使用 neo4j-admin database import

运行 neo4j-admin database import 最简单的方法是使用 kubectl exec 在 Neo4j 容器中运行它。然而,在与 Neo4j 进程相同的容器中运行 neo4j-admin database import 执行大量导入可能会导致资源争用问题,包括导致一个或两个进程被节点操作系统 OOM Kill。为避免这种情况,请使用单独的容器或 initContainer,或者将 Neo4j Helm 部署置于离线维护模式,然后运行 neo4j-admin database import

neo4j-admin database import 无法在 Neo4j 运行时替换现有数据库。要替换现有数据库,请在运行 neo4j-admin database import 之前 DROP 数据库或将 Neo4j Helm 部署置于离线维护模式。

替代方法

导入 Neo4j 数据的另一种方法是在 Kubernetes 外部运行一个单独的 Neo4j 独立实例,在该 Neo4j 实例上执行导入,然后使用备份和恢复转储和加载过程将生成的数据库复制到基于 Kubernetes 的 Neo4j 实例中。

© . All rights reserved.