You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载DEA药品交易CSV数据时出现Neo4j语法错误求助

问题诊断与修正

你的Cypher查询语法错误的核心原因是:apoc.periodic.iterate的第一个参数需要是字符串格式的Cypher查询语句,但你直接写了LOAD CSV代码,没有用引号包裹,导致Neo4j解析时识别错误。

另外还有两个小问题需要修正:

  1. 第二个参数里的箭头符号是HTML转义的->,要替换成Cypher原生的->
  2. 第一个参数的LOAD CSV语句结尾多了一个逗号,需要删除

修正后的完整查询语句

CALL apoc.periodic.iterate(
  'LOAD CSV WITH HEADERS FROM "file:///TruncatedDEA.csv" AS line',
  'MERGE (buyer:Buyer {BUYER_DEA_NO: line.BUYER_DEA_NO})
   ON CREATE SET 
     buyer.BUYER_BUS_ACT = line.BUYER_BUS_ACT,
     buyer.BUYER_NAME = line.BUYER_NAME,
     buyer.BUYER_ADDL_CO_INFO = line.BUYER_ADDL_CO_INFO,
     buyer.BUYER_ADDRESS1 = line.BUYER_ADDRESS1,
     buyer.BUYER_ADDRESS2 = line.BUYER_ADDRESS2,
     buyer.BUYER_CITY = line.BUYER_CITY,
     buyer.BUYER_STATE = line.BUYER_STATE,
     buyer.BUYER_ZIP = line.BUYER_ZIP,
     buyer.BUYER_COUNTY = line.BUYER_COUNTY;

   MERGE (reporter:Reporter {REPORTER_DEA_NO: line.REPORTER_DEA_NO})
   ON CREATE SET 
     reporter.REPORTER_BUS_ACT = line.REPORTER_BUS_ACT,
     reporter.REPORTER_NAME = line.REPORTER_NAME,
     reporter.REPORTER_ADDL_CO_INFO = line.REPORTER_ADDL_CO_INFO,
     reporter.REPORTER_ADDRESS1 = line.REPORTER_ADDRESS1,
     reporter.REPORTER_ADDRESS2 = line.REPORTER_ADDRESS2,
     reporter.REPORTER_CITY = line.REPORTER_CITY,
     reporter.REPORTER_STATE = line.REPORTER_STATE,
     reporter.REPORTER_ZIP = line.REPORTER_ZIP,
     reporter.REPORTER_COUNTY = line.REPORTER_COUNTY,
     reporter.Reporter_family = line.Reporter_family;

   MERGE (drug:Drug {DRUG_CODE: line.DRUG_CODE})
   ON CREATE SET 
     drug.DRUG_NAME = line.DRUG_NAME,
     drug.Product_Name = line.Product_Name,
     drug.Ingredient_Name = line.Ingredient_Name,
     drug.Measure = line.Measure,
     drug.MME_Conversion_Factor = line.MME_Conversion_Factor,
     drug.Combined_Labeler_Name = line.Combined_Labeler_Name,
     drug.dos_str = line.dos_str,
     drug.MME = line.MME;

   MATCH (buyer:Buyer {BUYER_DEA_NO: line.BUYER_DEA_NO})
   MATCH (reporter:Reporter {REPORTER_DEA_NO: line.REPORTER_DEA_NO})
   MATCH (drug:Drug {DRUG_CODE: line.DRUG_CODE})
   MERGE (transaction:Transaction {TRANSACTION_ID: line.TRANSACTION_ID})
   ON CREATE SET 
     transaction.TRANSACTION_CODE = line.TRANSACTION_CODE,
     transaction.QUANTITY = line.QUANTITY,
     transaction.UNIT = line.UNIT,
     transaction.ACTION_INDICATOR = line.ACTION_INDICATOR,
     transaction.ORDER_FORM_NO = line.ORDER_FORM_NO,
     transaction.CORRECTION_NO = line.CORRECTION_NO,
     transaction.TRANSACTION_DATE = line.TRANSACTION_DATE;

   MERGE (buyer)-[:BOUGHT]->(transaction)
   MERGE (reporter)-[:REPORTED]->(transaction)
   MERGE (drug)-[:CONTAINS]->(transaction);',
   {batchSize:1000, parallel:false}
);

关键修正点说明

  • 给第一个参数的LOAD CSV语句加上单引号包裹,同时将路径里的单引号改为双引号,避免字符串嵌套冲突
  • 删除第一个参数末尾多余的逗号
  • 将所有->替换为Cypher标准的->箭头符号

内容的提问来源于stack exchange,提问作者Daniël Scheeper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 15:15:27