neo4j学习笔记:导入csv文件

一、CSV文件

  1. CSV文件是一种逗号分隔值文件格式的纯文本文件(Comma-Seperated Values),现在不仅可以用逗号分隔,也可以用分号、制表符、空格等作为分隔符。

  2. CSV文件的每一行是一条记录,每条记录以CRLF(换行符)结尾,最后一行可以没有CRLF;可以有header,即第一行为与下文常规记录数量一致的记录;可以用双引号也可以不用,但如果双引号为记录内容,则需要加双引号转义。

  3. CSV文件产生于数据从一个存储系统传递到另一个存储系统的过程中。

  4. 基本上所有电子表格应用例如EXCEL等,都能够导入CSV文件,数据导入后以分隔符为单位被安排在电子表格的每个单元中。

  5. csv文件能够通过可以打开它的应用程序转换为各种不同文件格式,例如:EXCEL可以将CSV打开后存储为XLS、XLSX、PDF、TXT、XML和HTML文件格式;其他在线服务应用也提供将CSV导出为HTML、ODS和RTF文件格式。

    参考:https://docs.fileformat.com/spreadsheet/csv/

二、导入CSV文件的方法

  1. 导入方法的选择取决于数据集的大小。
  2. 各种方法对比:
方法描述适用数据集neo4j配置特点
Cypher 命令:LOAD CSV中小型数据集(≤10 million records)适用所有neo4j 设置,包括AuraDB支持URI加载或提取CSV数据;
可直接将导入数据映射为图结构;
可处理数据转换;
支持复杂计算;
可创建、合并实体、关系和结构。
neo4j-admin bulk import工具大型数据集适用于neo4j Desktop,neo4j EE Doker
kettle import工具超大型数据集

2.1 Cypher命令:LOAD CSV

2.1.1 导入本地CSV文件

方法:使用“file:///”

☆注意:由于AuraDB基于云,该方法不适用。
☆前提:出于安全考虑,neo4j默认设置本地文件仅能从neo4j import directory读取(该文件夹地址随OS不同而不同,具体查询neo4j文档),即:setting中默认设置dbms.directories.import=import。

A.读取import directory文件夹下CSV文件

基于以上前提,本方法实现步骤如下:
(1)第一步:将本地CSV文件放入neo4j默认的“导入”目录文件夹(import directiory)下,改文件夹位置在:

File typeDescriptionLinux/macOS/DockerWindowsDebian/RPMneo4j desktop
ImportAll CSV files that the command LOAD CSV uses as sources to import data in Neo4j.<neoj-home>/import<neo4j-home>/import/var/lib/neo4j/importFrom the Open dropdown menu of your Neo4j instance, select Terminal, and navigate to </import

来自:https://neo4j.com/developer/guide-import-csv/
注:针对neo4j desktop,可以直接在界面中点击当前project的“open folder”,直接打开import directiory,如下图所示:
neo4j desktop打开import文件夹的另一种方式

(2)第二步:使用 LOAD CSV FROM "file:///XXX.csv”

  1. 这里的XXX为import目录文件夹下CSV文件的位置;
  2. 如果数据有表头,使用LOAD CSV WITH HEADERS FROM “file:///XXX.csv”
B. 读取本地任意路径CSV文件

如果想读取不在import directory中的CSV,则:
(1)第一步: 先改变neo4j默认设置,即:删除dbms.directories.import=import或者在该语句前加“#”;
(2)第二步: 此时可使用 LOAD CSV FROM file:///C:/XXX/name.csv”(即:file:///+绝对路径), 导入本地CSV文件 。

C.使用LOAD CSV时,CSV文件须满足以下要求

(1)字符使用UTF-8编码;
(2)字段终止符默认为“,”,也可使用LOAD CSV提供的FIELDTERMINATOR进行修改;
(3)允许有带引号的字符串,但在读取后引号被丢弃;如果设置dbms.import.csv.legacy_quote_escaping为默认值true,则可使用\作为转义符;也可使用两个双引号,第一个双引号用作转义。

D. LOAD CSV的使用之其他
  1. 读取带表头的CSV文件: LOAD CSV WITH HEADERS FROM …
  2. 读取非逗号为分隔符的CSV文件: LOAD CSV FROM xxx FIELDTERMINATOR ‘分隔符’ 例如:读取以分号为分隔符的CSV:LOAD CSV FROM "file:///XXX.csv" FIELDTERMINATOR ';'
  3. 返回读取的CSV文件的当前行: LOAD CSV FROM "file:///XXX.csv" AS line RETURN linenumber() AS number, line
  4. 返回读取的CSV文件的绝对路径: LOAD CSV FROM "file:///XXX.csv" AS line RETURN DISTINCT file() AS path

2.1.2 导入远程CSV文件

A. 文件托管在网站上,则,通过URL链接可导入文件,例如:
LOAD CSV FROM 'http://data.neo4j.com/northwind/products.csv' AS row
RETURN row

☆注意:该文件需能够被访问,即:是空开的。

B. 文件被上传到Google sheet, 详见:https://neo4j.com/developer/kb/import-csv-locations/。
C. 访问github数据,详见:https://neo4j.com/developer/kb/import-csv-locations/。

2.1.3 Tips

(1)读取的CSV数据均为字符串,如有需要,需使用toInteger()、toFloat()、split()等转换数值;
(2)labels、property names、relationship-types等区分大小写,需注意。
(3)数据越干净,导入越容易。尽量在导入数据前对数据进行复杂的清洗和处理操作。

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值