推荐答案
LOAD CSV WITH HEADERS FROM 'file:///data.csv' AS row
CREATE (n:Person {name: row.name, age: toInteger(row.age)});本题详细解读
1. LOAD CSV 的基本语法
LOAD CSV 是 Neo4j 提供的一个用于从 CSV 文件中导入数据的命令。它的基本语法如下:
LOAD CSV [WITH HEADERS] FROM 'file:///path/to/file.csv' AS row
WITH HEADERS:可选参数,表示 CSV 文件的第一行是列名。如果指定了这个参数,可以通过row.column_name来访问每一列的数据。FROM 'file:///path/to/file.csv':指定 CSV 文件的路径。路径可以是本地文件路径,也可以是远程 URL。AS row:将每一行数据赋值给变量row,后续可以通过row来访问每一列的数据。
2. 使用 LOAD CSV 导入数据
假设我们有一个 CSV 文件 data.csv,内容如下:
name,age Alice,30 Bob,25 Charlie,35
我们可以使用以下 Cypher 语句将数据导入到 Neo4j 中:
LOAD CSV WITH HEADERS FROM 'file:///data.csv' AS row
CREATE (n:Person {name: row.name, age: toInteger(row.age)});WITH HEADERS:表示 CSV 文件的第一行是列名。CREATE (n:Person {name: row.name, age: toInteger(row.age)}):为每一行数据创建一个Person节点,并将name和age属性赋值给节点。
3. 注意事项
- 文件路径:
file:///表示文件路径是相对于 Neo4j 的import目录的。如果文件不在import目录下,需要提供绝对路径。 - 数据类型转换:CSV 文件中的所有数据都是字符串类型,因此在导入时需要进行适当的数据类型转换,例如使用
toInteger()将字符串转换为整数。 - 性能优化:对于大规模数据导入,建议使用
USING PERIODIC COMMIT来分批提交事务,以避免内存溢出。
USING PERIODIC COMMIT 500
LOAD CSV WITH HEADERS FROM 'file:///data.csv' AS row
CREATE (n:Person {name: row.name, age: toInteger(row.age)});USING PERIODIC COMMIT 500:每处理 500 行数据后提交一次事务。