Ошибка загрузки данных - нет такого файла или каталога - PullRequest
2 голосов
/ 29 января 2020

Развернутый анзограф на Docker, работающем на Ma c.

Попытка загрузки данных с использованием примера файла mov ie актеров, используя следующую команду вставки в консоли запросов,

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-actors.csv; Нет такого файла или каталога

Что странно, если файл существует в каталоге выше.

Ответы [ 2 ]

2 голосов
/ 29 января 2020

База данных ищет файл в контейнере docker, в котором работает Anzograph, а не на локальном / хост-компьютере, на котором расположен ваш файл.

Вам потребуется переместить / скопировать файл в контейнер docker перед выполнением команды вставки.

В Docker выполните следующую команду для доступа к файловой системе AnzoGraph, каталогу / opt / anzograph:

sudo docker exe c -it anzograph_container_name / bin / bash

Где anzograph_container_name - это имя контейнера AnzoGraph, к файловой системе которого вы хотите получить доступ. Например: sudo docker exe c -it anzograph / bin / bash

Определите, где в файловой системе вы хотите разместить загружаемые файлы и, при необходимости, создайте новый каталог. Например: mkdir / opt / anzograph / csv /

Введите команду exit для выхода из контейнера.

Выполните следующую команду Docker, чтобы скопировать файлы с хост-сервера в местоположение в AnzoGraph. контейнер. sudo docker cp / path / filename anzograph_container_name: / path / dir

Например: sudo docker cp /home/usera/movie-actors.csv анзограф: / opt / anzograph / csv /

Или эта команда копирует каталог в контейнер:

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

Например: sudo docker cp -r /home/user/movie-actors.csv anzograph: / opt / anzograph / csv /

Измените путь в предложении WHERE в вашем запросе INSERT, чтобы отразить новое местоположение.

1 голос
/ 04 апреля 2020

Чтобы иметь возможность разрешить AnzoGraph загружать файлы из локальной файловой системы контейнера (наложения), вам нужно получить их там.

Как уже было сказано ранее, вы можете скопировать файлы в контейнер, но это может имеет смысл просто смонтировать их по объему, если они уже доступны на хосте * 1007. *

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_p в $ data_c_p в контейнере

...