教程:使用 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 后接下来要做什么。