教程:使用 LOAD CSV 导入 CSV 数据

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

如需更具实践性的体验,请报名 GraphAcademy 课程将 CSV 数据导入 Neo4j。要将更大的 CSV 文件导入 Neo4j,请参阅 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

结果是

{
"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

结果是

{
"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. 统计 CSV 文件中的行数,并将其与新查询中使用 COUNT 函数由 LOAD CSV 子句返回的行数进行比较

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

继续学习

无论您的数据来源何处,它在导入之前可能都需要进行一些准备。请参阅使用 CSV 文件以了解更多关于数据结构、如何清理和优化数据的信息。

或者,您可以按照教程:创建图数据模型,了解将数据导入 Neo4j 后接下来要做什么。

© . All rights reserved.