【小筆記】如何在docker中更新或導入neo4j數據?

如何在docker中更新或導入neo4j數據?

(1)背景
我嘗試了4.4.9和5.19.0版本的Neo4j社區版,基于他們的鏡像創建容器后,需要導入我準備好的csv文件或dump文件,因為數據量非常大,所以采用neo4j-admin工具導入方案
(2)遇到的問題
neo4j-admin工具需要使Neo4j處于停止狀態,當進入容器后,執行了neo4j stop指令后,容器會自動退出!查詢運行的docker容器,發現容器已經停止運行了…然后曾經的3.X版本是可以停止后,保持在容器中操作的。
不停止neo4j進行數據導入,就只有load CSV方式了,但是我的數據量有幾百萬,load csv想都不敢想…
(3)原因:
在這里插入圖片描述
(4)可能的解決辦法

在這里插入圖片描述
我試過上面的5,無效,然后又在網上找了一通,發現談這個問題的都很少,始終沒找到一個可好用有效的辦法。

(6)最終解決辦法
找個這篇博客,嘗試了一下,發現有用:
neo4j 數據遷移簡單操作

我再結合我的實踐說一下我的理解和分析:

  • docker版本的Neo4j,特別是用到了5.X的,neo4j stop這個指令就基本上不能用了,用了就停止容器,還怎么執行neo4j-admin呢?所以只能考慮在容器未運行的狀態下進行數據遷移;
  • 容器停止狀態下,dump和csv都無法導入,準確說來,什么導入方式都不可用,但是還有一種最簡單純粹的方法:就是復制已經導入好的數據庫數據,替換容器的空數據庫數據,即用數據復制的方式

數據復制的具體方法(可用)

1.首先你的Neo4容器(稱為A)它在創建時是有外掛路徑的,至少要掛載data路徑(存放數據庫文件)

docker run -d --name neo4j-5.19 -p 7474:7474 -p 7687:7687 -v /data/neo4j/data:/data -v /data/neo4j/logs:/logs -v /data/neo4j/conf:/var/lib/neo4j/conf -v /data/neo4j/import:/var/lib/neo4j/import --env NEO4J_AUTH=neo4j/neo4j 可用的鏡像版本
  1. 在你的電腦,win或linux都可以,再搞一個Neo4j(稱為B,就是正常的安裝包,不是容器),基于它完成數據導入:
    (1)刪除兩個目錄:data/databases/neo4j,data/transactions/neo4j
    (2)切換到Neo4j目錄下的bin路徑:cd bin
    (3)執行neo4j-admin進行數據導入,5.X版本的參考如下:
neo4j-admin database import full --nodes=import/nodes_series.csv --nodes=import/nodes_part_fused.csv --relationships=import/relation_series2part_fused.csv --skip-bad-relationships

此時data/databases/neo4j,data/transactions/neo4j兩個路徑下的數據會重新生成,即導入的數據。

3.復制B的data/databases/neo4j,data/transactions/neo4j到A對應的路徑下進行替換(替換前,可以先刪除A掛載路徑下的data/databases/neo4j,data/transactions/neo4j)。

4.啟動A,可以發現A原本沒數據的,現有有了數據了。如此,達成曲線救國。

特別注意:A和B的版本必須一模一樣,如此B的導入數據在A中可以正常使用!
上面給的是B的neo4j-admin導入方式,實際上其它方式,在容器外都是可用的哈。

附錄:Neo4j數據導入方式

Neo4j導入數據的方式有:

  • 使用LOAD CSV導入數據
  • 使用APOC導入數據
  • 使用編程語言(Java,python,js,C#,Go)導入數據
  • 使用neo4j-admin工具導入數據
  • 使用應用導入數據
  • 使用ETL工具導入數據
    在這里插入圖片描述
    詳細可參考:
    Neo4j導入數據的5種方式詳解配圖

個人經驗:
(1)小數據集(如幾百、幾千條)可以用load CSV方式,最簡單,無需停止Neo4j,可以在線導入,最大缺點就是慢,且導入數據有上限(好像是1W條)
(2)大量數據(如十萬、百萬級),用neo4j-admin工具導入,百萬級實體和關系導入,只需要秒級或幾分鐘級,缺點:必須基于空數據庫,且neo4j處于未運行狀態。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14949.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14949.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14949.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2024電工杯數學建模B題Python代碼+結果表數據教學

2024電工杯B題保姆級分析完整思路代碼數據教學 B題題目:大學生平衡膳食食譜的優化設計及評價 以下僅展示部分,完整版看文末的文章 import pandas as pd df1 pd.read_excel(附件1:1名男大學生的一日食譜.xlsx) df1# 獲取所有工作表名稱 e…

HarmonyOS-MPChart繪制一條虛實相接的曲線

本文是基于鴻蒙三方庫mpchart(OpenHarmony-SIG/ohos-MPChart)的使用,自定義繪制方法,繪制一條虛實相接的曲線。 mpchart本身的繪制功能是不支持虛實相接的曲線的,要么完全是實線,要么完全是虛線。那么當我…

面試總結之:socket線路切換

"socket線路切換"通常指的是在網絡通信過程中,根據當前網絡狀態或策略來動態更換數據傳輸路徑的技術。這種技術可以提高通信的可靠性和性能。 在實際應用中,線路切換可能涉及到多種技術,例如: 負載均衡:根據每條路徑的當前負載情況,動態地選擇一條較為空閑的路…

MySql超大Sql文件導入效率優化 —— 筑夢之路

使用場景 日常我們對mysql數據庫、mariadb數據庫進行定時備份,而隨著時間增長,導出來的備份文件越來越大,使用備份sql文件進行還原的時候,大文件非常慢,有些要執行很長時間,效率很低。 如何優化&#xff…

根據多個坐標經緯度獲取到中心點的經緯度,scala語言

文章目錄 前言scala 代碼 總結 前言 Scala 語言 通過多個經緯度坐標點, 計算出中心點, 這里使用的是 Scala 語言,其他的語言需要自行轉換。求出來的并不是原有的點,而是原有點的中心位置的點。 scala 代碼 package com.dw.process.midimport java.lang.Double.pa…

C語言 | Leetcode C語言題解之第97題交錯字符串

題目&#xff1a; 題解&#xff1a; bool isInterleave(char* s1, char* s2, char* s3) {int n strlen(s1), m strlen(s2), t strlen(s3);int f[m 1];memset(f, 0, sizeof(f));if (n m ! t) {return false;}f[0] true;for (int i 0; i < n; i) {for (int j 0; j &l…

基于UDP的tftp的文件傳輸

#define SER_PORT 69 #define SER_IP "192.168.125.71" #define CLT_PORT 6666 #define CLT_IP "192.168.125.158" int main(int argc, const char *argv[]) {//創建套接字文件描述符int cfd socket(AF_INET,SOCK_DGRAM,0);if(cfd -1){perror("sock…

vue2-computed,vue3+watch 前端實現列表搜索,結合filter+some+indexOf

vue2 computed實現 computed: {FBAAddressListComputed () {if (!this.fbaInput) return this.FBAAddressListconst lowerCaseInput this.fbaInput.toLowerCase()return this.FBAAddressList.filter((item) > {return [item.fbaCode, item.zipCode, item.countryCode, ite…

六(3)、RTKLIB源碼解析 — [postpos]: execses(antpos, outhead, procpos)

目錄 一、antpos() 1.1 avepos() 1.2 getstapos() 二、outhead() 三、procpos() 3.1 inputobs() 3.1.1 nexto

牛客周賽 Round 42

小紅叕戰小紫 #include<bits/stdc.h> using namespace std; void solve(){string s;cin>>s;if(s.length()<1)cout<<"yukari";else cout<<"kou"<<endl; } int main(){ios::sync_with_stdio(false), cin.tie(0), cout.tie…

Qt時間類、日期類、時間日期類介紹

一.時間類&#xff08;QTime&#xff09; Qt中的時間類QTime是用來處理時間的類&#xff0c;它可以表示一個特定的時間&#xff0c;精確到毫秒。QTime類提供了一些方法來訪問和操作時間&#xff0c;例如獲取小時、分鐘、秒以及毫秒部分&#xff0c;還可以進行時間的比較和運算。…

Python列表,元組,集合,字典詳解一篇搞懂

目錄 介紹 列表(List) 集合(Set) 字典(Dict) 元組(Tuple) 列表 列表定義 ?編輯 列表切片 列表常用方法 append extend ?編輯 insert ?編輯 remove pop ?編輯 clear ?編輯 列表修改元素 sort 升序 倒序 reverse count ?編輯 index 淺拷貝和深拷貝 …

《書生·浦語大模型實戰營》第一課 學習筆記:書生·浦語大模型全鏈路開源體系

文章大綱 1. 簡介與背景智能聊天機器人與大語言模型目前的開源智能聊天機器人與云上運行模式 2. InternLM2 大模型 簡介3. 視頻筆記&#xff1a;書生浦語大模型全鏈路開源體系內容要點從模型到應用典型流程全鏈路開源體系 4. 論文筆記:InternLM2 Technical Report簡介軟硬件基礎…

基于Java的地震震中附近城市分析實戰

目錄 前言 一、空間數據說明 1、空間查詢 二、Java后臺開發 1、模型層設計與實現 2、控制層設計與實現 三、Leaflet地圖開發 1、地震震中位置展示 2、附近城市展示 3、成果展示 總結 前言 隨著全球氣候變化和地殼活動的不斷演變&#xff0c;地震作為一種自然災害&…

第十三節:帶你梳理Vue2 : watch偵聽器

官方解釋:> 觀察 Vue 實例變化的一個表達式或計算屬性函數。回調函數得到的參數為新值和舊值。表達式只接受監督的鍵路徑。對于更復雜的表達式&#xff0c;用一個函數取代<br/>## 1. 偵聽器的基本使用偵聽器可以監聽data對象屬性或者計算屬性的變化watch是觀察屬性的…

現代C++ 如何使用 Lambda 使代碼更具表現力、更容易理解?

使用 Lambda 使代碼更具表現力 一、Lambda VS. 仿函數二、總結 一、Lambda VS. 仿函數 Lambda 是 C11 中最引人注目的語言特性之一。它是一個強大的工具&#xff0c;但必須正確使用才能使代碼更具表現力&#xff0c;而不是更難理解。 首先&#xff0c;要明確的是&#xff0c;…

向npm發布自己寫的vue組件,使用vite創建項目

向npm發布自己寫的vue組件&#xff0c;使用vite創建項目 創建項目 pnpm create vite輸入項目名稱 由于我的組件是基于 ant-design-vue和vue的&#xff0c;需要解析.vue文件&#xff0c;我又安裝了下面4個。 然后執行 pnpm i安裝依賴 vite.config.ts import { defineC…

防范TOCTOU競態條件攻擊

防范TOCTOU競態條件攻擊 在軟件開發過程中&#xff0c;我們常常會遇到需要在使用資源之前檢查其狀態的情況。然而&#xff0c;如果資源的狀態在檢查和使用之間發生了變化&#xff0c;那么檢查的結果可能會失效&#xff0c;導致軟件在資源處于非正常狀態時執行無效操作。這種時…

[datawhale202405]從零手搓大模型實戰:TinyAgent

結論速遞 TinyAgent項目實現了一個簡單的Agent智能體&#xff0c;主要是實現了ReAct策略&#xff08;推理調用工具的能力&#xff09;&#xff0c;及封裝了一個Tool。 項目實現有一定的疏漏。為了正確運行代碼&#xff0c;本次對代碼Agent部分進行了簡單修改&#xff08;完善…

windows安裝rocketmq

1.下載連接 https://rocketmq.apache.org/download/ 2.解壓到D盤下&#xff08;其他位置也可以&#xff09; 3.配置環境變量 需要有jdk環境 新建ROCKETMQ_HOME&#xff0c;剛剛解壓的位置 編輯Path&#xff0c;新增%ROCKETMQ_HOME%\bin 4.啟動mqnameserver 進入安裝bin目錄下…