加载数据时出错 - 没有此类文件或目录



在Mac上运行的Docker上部署了Anzograph。

尝试使用查询控制台中的以下插入命令使用示例电影演员文件加载数据,

INSERT { GRAPH <actors> {
?MovieIRI a <Movie> ;
<MovieTitle> ?MovieTitle .
?ActorIRI a <Actor> ;
<ActorName> ?ActorName .
?ActorIRI <ActedIn> ?MovieIRI .
}
}
WHERE { TABLE <file:/home/usera/movie-actors.csv>
('csv','leader',',',true,'MovieID:long,MovieTitle:char,ActorID:long,ActorName:char')
BIND(IRI(CONCAT("Movie",str(?MovieID))) as ?MovieIRI)
BIND(IRI(CONCAT("Actor",str(?ActorID))) as ?ActorIRI)
}

执行后,我收到错误,

错误 -/home/usera/movie-actor.csv;没有这样的文件或目录

奇怪的是该文件存在于上面的目录中。

数据库正在运行Anzograph的docker容器中查找文件,而不是在文件所在的本地/主机上查找文件。

在执行插入命令之前,您需要将文件实际移动/复制到 docker 容器。

在 Docker 中,运行以下命令以访问 AnzoGraph 文件系统,即/opt/anzograph 目录:

sudo docker exec -it anzograph_container_name/bin/bash

其中anzograph_container_name是要访问其文件系统的AnzoGraph容器的名称。 例如: u2028sudo docker exec -it anzograph/bin/bash

确定要在文件系统上放置加载文件的位置,并在必要时创建新目录。 例如: MKDIR/opt/Anzograph/csv/

键入 exit 以退出容器。

运行以下 Docker 命令,将文件从主机服务器复制到 AnzoGraph 容器中的某个位置。 sudo docker cp/path/filename anzograph_container_name:/path/dir

例如: u2028sudo docker cp/home/usera/movie-actor.csv anzograph:/opt/anzograph/csv/

或者此命令将目录复制到容器:

sudo docker cp -r/path/dirname anzograph_container_name:/path

例如: u2028sudo docker cp -r/home/user/movie-actor.csv anzograph:/opt/anzograph/csv/

修改 INSERT 查询中 WHERE 子句中的路径以反映新位置。

为了能够允许AnzoGraph从容器本地(覆盖(文件系统加载文件,您需要将它们放在那里。

如前所述,您可以将文件复制到容器中,但如果它们已在 Docker 主机上访问,则仅卷挂载它们可能是有意义的。

export data_p=/some/path/on/dockerhost
export data_c_p=/some/path/in/docker/container

docker run -d -v $data_p:data_c_p -p 80:8080 -p 443:8443  -p 5600:5600 -p 5700:5700 --name=anzograph cambridgesemantics/anzograph:2.1.1-latest

AnzoGraph 将在容器中的 $data_c_p 处看到您放入 $data_p 中的文件

最新更新