【问题标题】:Neo4J Docker-compose Loading CSV data at startupNeo4J Docker-compose 在启动时加载 CSV 数据
【发布时间】:2021-03-10 06:18:06
【问题描述】:

我正在尝试编写一个调用 Neo4J 数据库的小型 Python Web 服务。这纯粹是在开发环境中。我想在 Neo4J 容器启动时加载一些 CSV 数据。

我曾尝试使用EXTENSION_SCRIPT 环境设置通过类似脚本来加载数据

#!/bin/bash

load()
{
    echo "Loading data"
    neo4j-admin import --nodes=/var/lib/neo4j/import/test.csv
}

load

我不断收到以下形式的错误WARNING Import failed. The store files in /data/databases/neo4j are left as they are, although they are likely in an unusable state

我假设加载需要在 neo4j 启动之前发生,因为 db 文件有一些锁定。有人解决了这个问题吗?

我的 Docker-compose 如下:

neo4j:
    build: ./graph
    restart: unless-stopped
    ports: 
      - 7474:7474
      - 7687:7687
    volumes:
      - ./conf:/conf
      - ./data:/data
      - ./import:/import
      - ./logs:/logs
      - ./plugins:/plugins
    environment: 
      # Raise memory limits
      - NEO4J_dbms_memory_pagecache_size=1G
      - NEO4J_dbms.memory.heap.initial_size=1G
      - NEO4J_dbms_memory_heap_max__size=1G

还有我的 Dockerfile:

FROM neo4j:latest

WORKDIR /

COPY load.sh /load.sh
RUN chmod +x /load.sh

ENV EXTENSION_SCRIPT=load.sh

COPY test.csv /var/lib/neo4j/import/test.csv

【问题讨论】:

    标签: docker csv import neo4j docker-compose


    【解决方案1】:

    neo4j-admin import 只能用于将数据加载到以前未使用的数据库中。 您应该在 COPY 之后将 load.sh 作为 dockerfile 的一部分运行。

    RUN /load.sh
    

    【讨论】:

    • 是否可以将数据加载到现有数据库中,或者我需要为此使用 Cypher 吗?
    • 还有水壶。但我认为作为图像一部分的一次性工作最好编写 Cypher 。见neo4j.com/developer/guide-import-csv
    • 是的,我看到无论出于何种原因,我都没有设法让它在容器启动时工作,我认为时间问题。最终我在应用程序中使用了load
    猜你喜欢
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2015-12-13
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2016-12-08
    相关资源
    最近更新 更多