使用 LOAD CSV 导入 CSV 数据

Neo4j 支持 不同的方法 导入数据。选择使用哪种方法取决于数据集大小、部署方式以及对 Cypher® 的熟悉程度。本指南展示如何使用 LOAD CSV 命令将 CSV 数据导入 Neo4j。

想获得更实战的体验,请报名参加 GraphAcademy 课程 Importing CSV data into Neo4j。若要导入更大的 CSV 文件,请参阅 Neo4j-admin 导入 教程。

加载文件

LOAD CSV 命令可用于将数据加载到任何 Neo4j 部署中,无论是 Aura 实例 还是本地安装。有关信息请参阅 部署选项。该命令如下所示

LOAD CSV [WITH HEADERS] FROM url [AS alias] [FIELDTERMINATOR char]

该命令的作用是

  • WITH HEADERS(可选) → CSV 文件的第一行被视为标题,且每行被视为键值对映射,而不是值列表。

  • FROM(必需) → 指定文件位置,无论是本地还是网络。

  • AS alias(可选) → 为每行命名以供引用。

  • FIELDTERMINATOR(可选) → CSV 文件的默认字段分隔符是逗号,但也支持其他分隔符,可在此指定。

您可以导入 本地文件。但在本指南中,您将使用链接来加载 CSV 文件。

LOAD CSV WITH HEADERS
FROM 'https://data.neo4j.com/importing-cypher/people.csv' AS row
RETURN row

结果为:

row

{
"birthYear": "1942",
"name": "Gerard Pires",
"personId": "23945"
}

{
"birthYear": "1941",
"name": "Helen Reddy",
"personId": "553509"
}

{
"birthYear": "1939",
"name": "Susan Flannery",
"personId": "113934"
}

过滤已加载的数据

或者,您也可以使用 LOAD CSV 仅加载 CSV 文件中的部分数据。例如,只导入出生于 1942 年的人的信息。

LOAD CSV WITH HEADERS
FROM 'https://data.neo4j.com/importing-cypher/people.csv'
AS row
WITH row WHERE row.birthYear = '1942'
RETURN row

结果为:

row

{
"birthYear": "1942",
"name": "Gerard Pires",
"personId": "23945"
}

请注意,在查询中,需要将 1942 年作为 string 数据类型(用单引号 ' 包裹)。因为 LOAD CSV 会将所有值读取为 string。在下一步中,您将学习如何将这些值转换为相应的类型。

转换数据类型

people.csv 文件中,您有每个人的出生年份和 ID 编号等数据。LOAD CSV 仅将 所有 值读取为 string。为更好地处理数据,您可以将这些值转换为时间类型和数值类型。

`personId` 可以通过使用 `toInteger()` 函数转换为整数,`birthYear` 可以通过使用 `date()` 函数转换为日期格式。

LOAD CSV WITH HEADERS
FROM 'https://data.neo4j.com/importing-cypher/people.csv'
AS row
WITH toInteger(row.personId) AS personId, date(row.birthYear) AS birthYear
RETURN personId, birthYear
表 1. 结果
personId birthYear

23945

"1942-01-01"

553509

"1941-01-01"

113934

"1939-01-01"

请注意,`birthYear` 的属性值仅包含年份,但在转换为 `date` 类型时,Cypher 会自动将指定年份的 1 月 1 日加入,符合 `date` 数据类型的格式 `YYYY-MM-DD`。

检查导入的数据

您可能希望验证数据是否已正确导入。以下是一些确保导入数据准确的方法。

  1. 使用 COUNT 函数在新查询中统计 CSV 文件的行数,并将其与 `LOAD CSV` 子句返回的行数进行比较。

    LOAD CSV WITH HEADERS
    FROM 'https://data.neo4j.com/importing-cypher/people.csv'
    AS row
    RETURN count(row)
  2. 确保标题名称与 CSV 文件中的一致。

持续学习

无论数据来源为何,通常都需要在导入前进行一些准备工作。请参阅 Working with CSV files 了解数据结构、清理以及优化方法的更多信息。

或者,您可以遵循 Tutorial: Create a graph data model,了解导入数据到 Neo4j 后的下一步操作。