主要介绍将 Neo4j 数据库中数据全部导入到 MySQL 数据库中,将 Neo4j 数据导出为 CSV 格式数据,然后再将 CSV 格式数据导入到 MySQL 中。

这里介绍前半部分,即 Neo4j 数据导出为 CSV 格式,使用的工具为neo4j-shell-tools

实验环境

Ubuntu 系统版本:ubuntu 14.04-desktop-amd64
Neo4j 版本:neo4j-community-3.2.0
neo4j-shell-tools 版本:3.0.1

安装 neo4j-shell-tools

下载传输

neo4j-shell-tools GitHub 地址为:https://github.com/jexp/neo4j-shell-tools ,在“Installation”中直接点击文件下载

或使用我下载好的文件,百度网盘链接:http://pan.baidu.com/s/1nvt9iTN 密码:3hie

在 ubuntu 中默认下载地址为“Download”文件夹,将文件复制到 Neo4j 安装目录下。我存放 neo4j-shell-tools 的文件夹路径是/home/erik/Downloads/neo4j-shell-tools_3.0.1.zip,Neo4j 的安装路径为/usr/local/neo4j/neo4j-community-3.2.0/,所以复制操作为

cp /home/erik/Downloads/neo4j-shell-tools_3.0.1.zip /usr/local/neo4j/neo4j-community-3.2.0/

解压

要解压到 Neo4j 的 lib 目录下,解压过程中需要替换文件,输入y同意即可,

uzip neo4j-shell-tools_3.0.1.zip -d lib

启动

启动 neo4j-shell-tools 前必须将 Neo4j 程序关闭,然后才能使用 neo4j-shell-tools。
确认已经关闭 Neo4j 后,在 Neo4j 安装目录执行如下命令

./bin/neo4j-shell -path data/databases/graph.db

-path是要选择将要导出的数据库路径,默认数据库就存放在这个路径

查看输出、输入功能大概有以下几种

这里主要使用import-cypher功能将 Neo4j 中的数据导出为 CSV 格式数据。

导出数据

这里以导出 Neo4j 沙盒数据为例,Neo4j 沙盒数据申请及使用方法可以参考我之前博客:(1)Neo4j 沙盒实验申请使用过程,(2)Neo4j 沙盒数据导入到本地 Neo4j 数据库

Neo4j 沙盒数据部分节点的信息如下:

这里以一个关系(n)-[r]->(m)所包含的全部信息为一条信息,信息包含起始节点的 id、标签、每个属性,关系,终止节点的 id、标签、每个属性。
语法参考:https://github.com/jexp/neo4j-shell-tools/issues/23

to export all the nodes:

import-cypher -d”\t” -o out.csv MATCH (n) return id(n) as id, labels(n) as labels, n as props

to export all the nodes and their outgoing relationships and the target node:

import-cypher -d”\t” -o out.csv MATCH (n) OPTIONAL MATCH (n)-[r]->(m) return id(n) as start_id, id(r) as rel_id, type(r) as rel_typ, r as rel_props, id(m) as end_id

针对沙盒数据,具体执行语句为

neo4j-sh (?)$ import-cypher -o out10.csv MATCH(n) OPTIONAL MATCH(n)-[r]->(m) return id(n) as start_id,labels(n) as nlabels,n.name as nname,n.location as nlocation,n.ip as nip,n.size as nsize,n.zone as nzone,n.rack as nrack,n.ram as nram,n.disk as ndisk,n.id as nid,n.cpu as ncpu,n.type as ntype,n.versions as nversions,n.ports as nports,n.dependencies as ndependencies,type(r) as rel_type,id(m) as end_id,labels(m) as mlabels,m.name as mname,m.location as m.location, m.size as msize,m.zone as mzone,m.rack as mrack,m.ram as mram,m.disk as mdisk,m.id as mid,m.cpu as mcpu,m.type as mtype,m.versions as mversions,m.ports as mports,m.dependencies as mdependencies

看似内容很多,其实是因为节点属性类别很多,这里将他们都导出,作为一个字段,具体含义为:
import-cypher -o out10.csv导出数据基本语法,import-cypher -o即表示导出,原本示例语句中还有一个-d参数,是用来分割字段用的,选项是"\t",但加上这个参数会导致导出的数据分割混乱,发现去掉后数据规整了。

out10.csv是导出后保存数据的文件名,可以自定义,这是我测试的第10次,所以是out10.csv,导出的文件存放在 Neo4j 安装文件夹中,因为是在那里启动的 neo4j-shell-tools。

MATCH(n) OPTIONAL MATCH(n)-[r]->(m)这是查询节点和关系的语句,为后面的 return 字段做准备。

return id(n) as start_id,labels(n) as nlabels,n.name as nname...这一部分主要是提取起始节点的 id、标签以及各个属性值,可根据实际数据情况而定。

type(r) as rel_type这里是返回关系名称,只保留关系名,比如CONATIONS,如果使用r as rel_props则是完整的关系,比如(0)-[CONTAINS,352]->(267).

id(m) as end_id,labels(m) as mlabels,m.name as mname...与起始节点类似。

导出后的部分数据为

没有的属性值会自动空缺。

数据整理

导出的数据已经非常规整了,但可以观察到labels字段会有[ ],可以在Excel 中使用替换功能将其去掉。而且location字段中有逗号,因为 Excel 中保存的 CSV 格式默认是以逗号分隔的,在之后导入到 MySQL 数据库时需要利用这一特点将数据分开导入,所以这里为了避免混肴,也使用“替换”功能将其变为/
处理过的部分数据为

这样就可以直接导入 MySQL 数据库了,导入 MySQL 的具体过程可以参考我的博客MySQL LOAD DATA INFILE 导入 CSV 格式数据 。

参考资料:

1.jexp/neo4j-shell-tools: A bunch of import/export tools for the neo4j-shell:
https://github.com/jexp/neo4j-shell-tools

2.export-csv · Issue #23 · jexp/neo4j-shell-tools:
https://github.com/jexp/neo4j-shell-tools/issues/23

Neo4j 数据导出为 CSV 格式相关推荐

  1. python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...

    本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...

  2. NX软件:机器人焊点坐标数据导出为CSV格式文件操作方法

    目录 概述 创建点模型 生成焊点模型 导出焊点数据为CSV文件 焊点数据CSV文件查看 本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 概述 在使用机器人 ...

  3. phpMyAdmin将数据表中数据导出为csv文件,用微软excel打开时,中文乱码的原因以及解决办法

    中文乱码的原因:用户使用phpMyAdmin可以将数据表中数据导出为csv文件,而使用Excel工具打开该文件时,可能出现中文乱码的情况.这是因为phpMyAdmin导出的csv文件使用了UTF-8编 ...

  4. python如何复制oracle数据_Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法...

    本文实例讲述了Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法.分享给大家供大家参考.具体实现方法如下: # Export Oracle database tables ...

  5. C#中将DataTable中数据导出到csv文件中

    在上一篇博文[C#读取CSV文件的方法]中,我介绍了读取csv文件中数据的方法,现在我来介绍下将datatable中的数据导出到csv文件中的方法,废话不 多说了,deme程序的代码如下: prote ...

  6. c#读取csv文件成DataTable,将DataTable数据存储为csv格式文件

    全栈工程师开发手册 (作者:栾鹏) c#教程全解 c#读取csv文件成DataTable,将DataTable数据存储为csv格式文件, 测试代码 static void Main() {//自定义数 ...

  7. java导出excel 序号_java web将数据导出为Excel格式文件代码片段

    本文实例为大家分享了java web将数据导出为Excel格式文件的具体代码,供大家参考,具体内容如下 1.jsp代码 2.js代码 function getVerExcel() { window.l ...

  8. npoi 将html导出word,使用NPOI将数据导出为word格式里的table

    开发环境:VS2013+MySQL5.5+EF6+NPOI2.0.6 格式:WinForm+CodeFirst PS:vs2013的CodeFirst很方便了啊 CodeFirst方式就不再赘述了. ...

  9. pandas_datareader.data 获取雅虎财经股票数据并以csv格式存放

    pandas_datareader.data 获取雅虎财经股票数据并以csv格式存放 import numpy as np import pandas as pd import pandas_data ...

最新文章

  1. “去了太空就别回来了!”贝索斯还没“上天”,就遭美国 5 万多人请愿:不准重返地球...
  2. graphpad两组t检验_Graphpad 作图教程 | 手把手教你绘制森林图
  3. 使用nginx缓存服务器上的静态文件
  4. git 推送本地分支到远程分支 git push origin
  5. Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解
  6. jzoj4049-排序【搜索】
  7. [css] 说说position:sticky有什么应用场景
  8. html页面使用var变量,使用var定义变量和不使用var的本质区别
  9. Elasticsearch查询之term/match解析
  10. 最简单的基于FFmpeg的封装格式处理:视音频分离器(demuxer)
  11. 64位ubuntu能安装mysql数据库_Ubuntu操作系统下安装MySQL数据库的方法
  12. ubuntu下安装英汉词典——stardict
  13. 今日头条极速版自动脚本_开卷有益——②今日头条极速版
  14. GB28181协议--GB28181协议简介
  15. 名利双收的公益创业,“汇新杯”响应时代召唤助力公益创业
  16. 我的微语录周记2012-08-20---2012-…
  17. 三哥新发现了比金星还厉害的飞行物
  18. CFA一级学习笔记--固定收益(一)--基本概念
  19. 全球与中国同心管换热器市场市场需求动态及十四五前景展望研究报告2022~2028年
  20. BootStrap4中使用图标

热门文章

  1. 浅谈镜头滤镜的类型及作用
  2. 王选:我一生中的几个重要抉择
  3. OpenCV函数之cvCvtColor
  4. 电子信息毕设分享 火灾报警系统设计与实现
  5. pgadmin转mysql_pgAdmin 使用总结及postgreSQL常用操作
  6. APP加固技术历程及未来级别方案:虚机源码保护
  7. 221114-华中科技大学学位论文利用Pandoc实现LaTex转Word
  8. 花旗银行的ATM机的易用点
  9. html div分屏,js 实现用div 上下分屏
  10. STM32 寄存器位操作详解