从 Web-API 加载数据

支持的协议包括 filehttphttpss3gshdfs,并允许重定向。

如果未提供过程(procedure),该过程将尝试检查 URL 是否实际上是一个文件。

由于启用了 apoc.import.file.use_neo4j_config,这些过程会通过读取两个配置参数 dbms.security.allow_csv_import_from_file_urlsserver.directories.import 来检查是否允许文件系统访问,并可能将其限制在特定目录中。如果您想取消这些限制,请设置 apoc.import.file.use_neo4j_config=false

CALL apoc.load.xml('http://example.com/test.xml', ['xPath'], [config]) YIELD value as doc CREATE (p:Person) SET p.name = doc.name

从 XML URL(例如 web-api)加载数据,将 XML 导入为带有属性以及 _type_text_children 字段的单个嵌套映射(nested map)。

CALL apoc.load.csv('url',{sep:";"}) YIELD lineNo, list, strings, map, stringMap

从 URL 加载 CSV 作为值流
配置(config)包含以下任意内容:{skip:1,limit:5,header:false,sep:'TAB',ignore:['aColumn'],arraySep:';',results:['map','list','strings','stringMap'],
nullValues:[''],mapping:{years:{type:'int',arraySep:'-',array:false,name:'age',ignore:false,nullValues:['n.A.']}}

CALL apoc.load.xls('url','Sheet'/'Sheet!A2:B5',{config}) YIELD lineNo, list, map

从 URL 加载 XLS 作为值流
配置(config)包含以下任意内容:{skip:1,limit:5,header:false,ignore:['aColumn'],arraySep:';'+ nullValues:[''],mapping:{years:{type:'int',arraySep:'-',array:false,name:'age',ignore:false,nullValues:['n.A.']}}

从压缩文件 (zip/tar/tar.gz/tgz) 加载单个文件

从压缩文件加载数据时,我们需要在压缩文件中的文件名或路径前添加 ! 字符。例如

加载压缩的 CSV 文件
apoc.load.csv("pathToCompressedFile/file.zip!pathToCsvFileInZip/fileName.csv")

使用 S3 协议

使用 S3 协议时,我们需要下载以下 jar 包并将其复制到插件(plugins)目录中

复制这些文件后,我们需要重启数据库。

S3 URL 必须采用以下格式:

  • s3://accessKey:secretKey[:sessionToken]@endpoint:port/bucket/key(其中 sessionToken 是可选的),或者

  • s3://endpoint:port/bucket/key?accessKey=accessKey&secretKey=secretKey[&sessionToken=sessionToken](其中 sessionToken 是可选的),或者

  • s3://endpoint:port/bucket/key(如果 accessKey、secretKey 和可选的 sessionToken 已在环境变量中提供)

不检查 SSL 证书的 S3 协议

要在不需要 SSL 证书的提供商上运行 S3(例如以如下方式创建的 minio 容器)

docker run -p 9000:9000 -p 9001:9001 \
  -e "MINIO_ROOT_USER=accessTestKey" \
  -e "MINIO_ROOT_PASSWORD=secretTestKey" \
  -e "MINIO_DEFAULT_BUCKETS=test" \
  bitnami/minio:2025.1.20

我们需要在 neo4j.conf 中加入此设置

server.jvm.additional=-Dcom.amazonaws.sdk.disableCertChecking=true

因此,使用此设置和上述 minio 容器,从 test 存储桶中检索名为 foo.csv 的 CSV 文件的正确方法是

CALL apoc.load.csv('s3://127.0.0.1:9000/test/foo.csv?accessKey=accessTestKey&secretKey=secretTestKey')

使用 hdfs 协议

要使用 hdfs 协议,我们需要下载并复制 APOC Extended 库中未包含的其他 jar 包。我们可以从 此链接 下载,或者通过在本地下载 apoc 存储库来获取

git clone http://github.com/neo4j-contrib/neo4j-apoc-procedures
cd neo4j-apoc-procedures/extra-dependencies
./gradlew shadow

之后,一个名为 apoc-hadoop-dependencies-2025.10.0.jar 的 jar 包将被创建在 neo4j-apoc-procedures/extra-dependencies/hadoop/build/lib 文件夹中。

下载/创建该文件后,应将其放置在 plugins 目录中并重启 Neo4j 服务器。

使用 Google Cloud Storage

为了使用 Google Cloud Storage,您需要将以下 Google Cloud 依赖项添加到插件目录中

  • api-common-1.8.1.jar

  • failureaccess-1.0.1.jar

  • gax-1.48.1.jar

  • gax-httpjson-0.65.1.jar

  • google-api-client-1.30.2.jar

  • google-api-services-storage-v1-rev20190624-1.30.1.jar

  • google-auth-library-credentials-0.17.1.jar

  • google-auth-library-oauth2-http-0.17.1.jar

  • google-cloud-core-1.90.0.jar

  • google-cloud-core-http-1.90.0.jar

  • google-cloud-storage-1.90.0.jar

  • google-http-client-1.31.0.jar

  • google-http-client-appengine-1.31.0.jar

  • google-http-client-jackson2-1.31.0.jar

  • google-oauth-client-1.30.1.jar

  • grpc-context-1.19.0.jar

  • guava-28.0-android.jar

  • opencensus-api-0.21.0.jar

  • opencensus-contrib-http-util-0.21.0.jar

  • proto-google-common-protos-1.16.0.jar

  • proto-google-iam-v1-0.12.0.jar

  • protobuf-java-3.9.1.jar

  • protobuf-java-util-3.9.1.jar

  • threetenbp-1.3.3.jar

我们准备了一个 uber-jar 文件,其中包含上述所有依赖项,以简化此过程。您可以 从此处下载它 并将其复制到您的插件目录中。

您可以通过以下 URL 格式使用 Google Cloud Storage

gs://<bucket_name>/<file_path>

此外,您还可以通过额外的 authenticationType 查询参数指定授权类型

  • NONE:用于公共存储桶(如果未指定参数,则这是默认行为)

  • GCP_ENVIRONMENT:当 Neo4j 运行在 Google Cloud 中时,作为服务账户进行被动身份验证

  • PRIVATE_KEY:用于使用为服务账户生成的私钥(需要设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量指向私钥 json 文件,详情请见:https://cloud.google.com/docs/authentication#strategies

示例

gs://andrea-bucket-1/test-privato.csv?authenticationType=GCP_ENVIRONMENT

出错时失败 (Fail on Error)

添加配置参数 failOnError:false(默认值为 true)意味着在出现错误时过程不会失败,而只会返回零行结果。

© . This site is unofficial and not affiliated with Neo4j, Inc.