neo4j-admin是管理neo4j DBMS的主要工具之一,是一种命令行工具。
neo4j admin命令需与当前neo4j用户一致。
(1)位置:以neo4j desktop为例,neo4j-admin在当前project下活动的database的dbms文件夹下的bin文件夹中。
(2)启动方式:
(3)语法:neo4j-admin [-hv] [COMMAND],常用命令如下:
注意环境和neo4j-admin 版本!
(1)用途:可用于批量导入CSV数据。
(2)前提:使用者必须有权限对dbmis.directories.data 和dbms.directories.log进行写入操作。
(3)特点:仅可用于初始化未运行的空数据库或创建新的数据库,即:即便一个已存在的存储过数据的数据库被清空也无法执行import命令。
(4)vs LOAD CSV:
| LOAD CSV | 用于将中小型CSV文件数据导入已存在的数据库 可按需执行LOAD CSV命令多次 |
| neo4j-admin import | 用于批量导入格式化的CSV文件 仅可对空数据库使用一次 注意:该命令为离线运行,即:执行该命令前数据库应处于未运行状态(关闭server),执行后许重启neo4j sever,详见下文。 |
(5)import 命令的使用:
neo4j-admin import [Options]
- Options为可选项,如有多个,用空格隔开,支持以下选项:
- --expand -comannds:
- --verbose:
- --cache-on-heap[=true/false]:
- --force[=true/false]:默认为false,如设置为true表示在导入数据前将存在的数据库文件删除,可用于需重新导入数据的场景,例如:在导入真实数据前,先导入了测试数据,打算先看看导入后数据是什么样子,那么可以设置--force=true,这样可以对同一个数据库进行重新导入;
- --high-io[=true/false]:默认为false,如设置为true
- --ignore-empty-strings[=true/false]:确定是否忽略数据空字段,默认为false
- --trim-strings=[true/false]:确定是否在遇到空白行时认为是null,默认为false
neo4j-admin import命令处理的CSV文件需要满足特定的格式,即CSV格式化文件,分为两类:节点文件(node files) 和 关系文件(relationship files)。基本格式为键值对,如下:
<name>:<field_type>
- name:指节点属性和节点ID,其他字段如LABEL等省略name;
- field_type:指字段类型,例如:ID、LABEL等。
(1)其他要求
(2) 建议
CSV节点文件的表头格式如下:
<nodeId:ID>, <propertyName1>, <propertyName2>, ..., <:LABEL>
- nodeId:ID:自定义的节点编号,对于每个节点这个编号是唯一的,用于创建关系等后续import操作时索引到指定节点;
- propertyNameX:节点属性,对于属性,field_type指data_type,默认为string,可定义的data_type如下表所示;
- :LABEL:(注意前面有冒号,省略了name)非必选,用于指定节点的标签,1个节点可以有多个标签,赋值时多个标签之间用该CSV文件的分隔符隔开,默认为“;”。
| 属性可定义的data_type(field_type): | |
|---|---|
| 数值类 | int, long, float, double |
| 布尔值 | boolean |
| 字符类 | byte, short, char, string |
| 点类型 | point |
| 日期时间 | date, localtime, time, localdatetime, datetime, duration |
例1:movies.csv,文件内容如下:
movieId:ID,title,year:int,:LABEL
tt0133093,"The Matrix",1999,Movie
tt0234215,"The Matrix Reloaded",2003,Movie;Sequel
tt0242653,"The Matrix Revolutions",2003,Movie;Sequel
movies.csv 定义了3个(电影)节点:
例2:actors_header.csv及actors.csv,文件内容如下:
actors_header.csv:
personId:ID,name,:LABEL
actors.csv:
keanu,"Keanu Reeves",Actor
laurence,"Laurence Fishburne",Actor
carrieanne,"Carrie-Anne Moss",Actor
actors_header.csv和actors.csv定义了3个(演员)节点:
CSV关系文件基本的表头格式为:
<:START_ID>, <:TYPE>, <:END_ID>, <RelationshipPropertiesName1>,...<RelationshipPropertiesName2>
- :START_ID:关系的起始节点编号(The ID of the start node for this relationship)必须有;
- :TYPE:关系的类别(relationship types),例如:WORKS_FOR, CONTAINS...,必须有;
- :END_ID:关系的结束节点编号(The ID of the end node for this relationship),必须有;
- RelationshipPropertiesNameX:关系的属性,非必须。
- <:START_ID>和<:END_ID>不需要定义name,如果定义了<name>:<START_ID>或<name>:<END_ID>,则自动忽略<name>。
例3:(基于例1、例2)roles_header.csv和roles.csv内容如下:
roles_header.csv:
:START_ID,role,:END_ID,:TYPE
roles.csv:
keanu,"Neo",tt0133093,ACTED_IN
keanu,"Neo",tt0234215,ACTED_IN
keanu,"Neo",tt0242653,ACTED_IN
laurence,"Morpheus",tt0133093,ACTED_IN
laurence,"Morpheus",tt0234215,ACTED_IN
laurence,"Morpheus",tt0242653,ACTED_IN
carrieanne,"Trinity",tt0133093,ACTED_IN
carrieanne,"Trinity",tt0234215,ACTED_IN
carrieanne,"Trinity",tt0242653,ACTED_IN
roles_header.csv和roles.csv定义了一类关系,创建了9条关系:
(1)除name:ID、:LABEL、:START_ID、:END_ID、:TYPE外的列都被认为是属性:
(2)name:ID:该键值对的设置是为了设置全局ID用于后续查询节点时使用:
(1)表头问题:表头与数据不一致,例如:缺失列、多列、表头分隔符与数据分隔符不一致等。在导入CSV文件时,提前确认表头没有这些问题将节省大量时间。
(2)引号问题:文件正文内容中引号,需要考虑转义问题。
(1)CSVKit:python提供一系列数据清洗和格式化工具,如csvstat、csvgrep等。
(2)CSVLint:一种线上处理CSV文件的网站,CSV Lint | Check your CSV files with CSVLint
(3) papa parse:Javascript库用于处理CSV文件。
举例说明批量处理方法:
import文件夹下现有以下CSV文件:
(1)cutomers.csv
customers.csv:
customerId:ID(Customer), name
23, Delicatessen Inc
42, Delicious Bakery
(2)products.csv
products.csv:
productId:ID(Product), name, price, :LABEL
11,Chocolate,10,Product;Food
(3)orders_header.csv
orders_header.csv:
orderId:ID(Order),date,total,customerId:IGNORE
(4)customer_orders_header.csv
customer_orders_header.csv:
:END_ID(Order),date:IGNORE,total:IGNORE,:START_ID(Customer)
(5)orders1.csv
orders1.csv:
1041,2020-05-10,130,23
(6)orders2.csv
orders2.csv:
1042,2020-05-12,20,42
(7)order_details.csv
order_details.csv:
:START_ID(Order),amount,price,:END_ID(Product)
1041,13,130,11
1042,2,20,11
执行如下neo4j-admin命令:
../bin/neo4j-admin import --database=orders
--nodes=Customer=import/customers.csv
--nodes=import/products.csv
--nodes=Order="import/orders_header.csv,import/orders1.csv,import/orders2.csv"
--relationships=CONTAINS=import/order_details.csv
--relationships=ORDERED="import/customer_orders_header.csv,import/orders1.csv,orders2.csv"
--trim-strings=true
(注:此处为了便于阅读使用分行显示,实际操作时不分行,用空格隔开)
执行后:
参考:Re: Neo4j-admin import successful but no data show... - Neo4j - 13384neo4j import显示成功但是查询没有数据_mydoubts的博客-CSDN博客_neo4j导入csv文件成功但查不到数据
本文参考neo4j官方文档:
我正在使用ruby1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\
查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html
CSV.open(name,"r").eachdo|row|putsrowend我得到以下错误:CSV::MalformedCSVErrorUnquotedfieldsdonotallow\ror\n文件名是一个.txt制表符分隔文件。我是专门做的。我有一个.csv文件,我转到excel,并将文件保存为.txt制表符分隔的文件。所以它是制表符分隔的。CSV.open不应该能够读取制表符分隔的文件吗? 最佳答案 尝试像这样指定字段分隔符:CSV.open("name","r",{:col_sep=>"\t"}).eachdo|row|
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
我正在尝试将一个简单的CSV文件读入HTML表格以在浏览器中显示,但我遇到了麻烦。这就是我正在尝试的:Controller:defshow@csv=CSV.open("file.csv",:headers=>true)end查看:输出:NameStartDateEndDateQuantityPostalCode基本上我只获取标题,而不会读取和呈现CSV正文。 最佳答案 这最终成为最终解决方案:Controller:defshow#OpenaCSVfile,andthenreaditintoaCSV::Tableobjectforda
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
我在Rails3.1项目中有以下助手-我只是想知道是否有办法测试CSV.generate调用。我很想说我知道如何去做,但事实是我什至不知道从哪里开始。任何想法表示赞赏。require'csv'moduleAdmin::PurchasesHelperdefcsv_purchase_listcolumns=['course','amount','first_name','last_name','contact_phone','contact_mobile','created_at']CSV.generate(:col_sep=>";",:row_sep=>"\r\n",:headers=>
在Ruby1.9中,我如何从ARGF中读取CSV?我尝试了以下方法,但没有打印任何内容:require'csv'CSV(ARGF).readdo|row|prowendhttp://www.ruby-doc.org/core-1.9.3/ARGF.htmlhttp://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV.html 最佳答案 如果你想偷懒你可以试试:CSV.new(ARGF.file).eachdo|row|...end来源:http://www.ruby-doc.org/std