教程:使用 LOAD CSV
导入 CSV 数据
如需更具实践性的体验,请报名 GraphAcademy 课程将 CSV 数据导入 Neo4j。要将更大的 CSV 文件导入 Neo4j,请参阅 Neo4j-admin 导入教程。 |
加载文件
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
结果是
行 |
---|
{
|
{
|
{
|
过滤加载的数据
或者,您也可以使用 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
结果是
行 |
---|
{
|
请注意,在查询中,您需要将 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
personId | birthYear |
---|---|
23945 |
"1942-01-01" |
553509 |
"1941-01-01" |
113934 |
"1939-01-01" |
请注意,birthYear
的属性值仅包含年份,但当转换为 date
类型时,Cypher 会自动将 1 月 1 日作为指定年份的日期添加。这是为了符合 date
数据类型 YYYY-MM-DD
的格式。
检查导入的数据
您可能需要验证数据是否已正确导入。您可以执行以下操作以确保导入的数据准确无误
-
统计 CSV 文件中的行数,并将其与新查询中使用
COUNT
函数由LOAD CSV
子句返回的行数进行比较LOAD CSV WITH HEADERS FROM 'https://data.neo4j.com/importing-cypher/people.csv' AS row RETURN count(row)
-
确保标题名称与 CSV 文件中的名称匹配。
继续学习
无论您的数据来源何处,它在导入之前可能都需要进行一些准备。请参阅使用 CSV 文件以了解更多关于数据结构、如何清理和优化数据的信息。
或者,您可以按照教程:创建图数据模型,了解将数据导入 Neo4j 后接下来要做什么。