Docker中neo4j导入csv数据(Win10版本)
Windows Home 版本,则 Docker Desktop 不支持共享驱动器功能。在这种情况下,您需要使用其他方法将文件夹挂载到容器中。
1、将文件夹挂载到Docker Desktop容器中
使用 Docker volume 来创建一个专门用于共享文件的卷。
docker volume create import
然后,可以在运行容器时使用 -v 选项将该卷挂载到容器的目录中。
docker run -it -v import:/import <docker中的image_name>
2、在Docker中部署neo4j
docker run -d --name neo4j -p 7474:7474 -p 7687:7687 --volume=$HOME/neo4j/data:/data --volume=$HOME/neo4j/logs:/logs --volume=$HOME/neo4j/conf:/conf -it -v import:/import --env NEO4J_AUTH=neo4j/Wycjh929 neo4j
3、将文件夹中的文件复制到新创建的 Docker volume 中
docker cp C:\neo4j\import(文件在电脑中的具体位置) <container_id>:/import
可以用如下命令查看正在运行的容器id
docker ps -q
4、用Cypher将csv数据集导入neo4j
以下是一个例子:
假设您有一个名为people.csv的文件,其中包含了每个人的姓名和年龄,其中第一行为标题,之后的行是每个人的数据,如下所示:
name,age
Alice,25
Bob,30
Charlie,35
您可以使用以下 Cypher 命令将该数据集导入 Neo4j 数据库:
LOAD CSV WITH HEADERS FROM "file:///people.csv" AS row
CREATE (:Person {name: row.name, age: toInteger(row.age)})
这个命令会:
- 使用 LOAD CSV WITH HEADERS 从 CSV 文件中读取数据。WITH HEADERS 表示第一行是标题。
- FROM “file:///people.csv” 指定文件的路径
- AS row 指定一个变量来存储每行数据。
- CREATE (:Person {name: row.name, age: toInteger(row.age)}) 创建一个名为 “Person” 的节点类型,每个节点包含一个 “name” 和 “age” 属性,它们的值来自 CSV 文件中的相应列。toInteger 将字符串转换为整数类型。