从Web API加载数据

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

如果未提供协议,此过程将尝试检查URL是否为文件。

如果启用 apoc.import.file.use_neo4j_config,过程将分别读取两个配置参数 dbms.security.allow_csv_import_from_file_urlsserver.directories.import,以检查文件系统访问是否允许,并可能限制到特定目录。如果您想解除这些限制,请设置 apoc.import.file.use_neo4j_config=false
过程 描述

apoc.load.json(urlOrKeyOrBinary 任意类型, path 字符串, config MAP<字符串, 任意类型>)

从URL加载JSON

apoc.load.xml(urlOrBinary 任意类型, path 字符串, config MAP<字符串, 任意类型>, simple 布尔值)

从URL加载XML

在使用上表中任何过程时,向配置映射添加 failOnError:false(默认为 true)将使它们在出错时不会失败。该过程将转而返回零行。例如

CALL apoc.load.json('http://example.com/test.json', null, {failOnError:false})

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

加载压缩文件时,必须在配置选项中提供压缩算法。例如,在以下情况下,如果 xmlCompressed 是一个 .gzip 扩展名文件,则需要向过程调用提供配置选项 {compression: 'GZIP'},以便将文档的根目录 / 加载到内存中的Cypher映射中。

CALL apoc.load.xml(xmlCompressed, '/', {compression: 'GZIP'})

有关其他有效压缩配置值,请参阅关于apoc.load.xml的文档

默认情况下,解压文件的大小限制为其压缩大小的200倍。通过调整 apoc.conf 中的配置选项 apoc.max.decompression.ratio 可以更改此数字(不能为0,因为这将导致无法解压)。如果给定负数,则解压大小没有限制。这会使数据库面临潜在的zip炸弹攻击。

尝试加载一个未压缩文件,如果其大小超过原始压缩文件的相对比率,将生成以下消息

The file dimension exceeded maximum size in bytes, 250000, which is 250 times the width of the original file.
The InputStream has been blocked because the file could be a compression bomb attack.

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

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

加载压缩的JSON文件
CALL apoc.load.json("https://github.com/neo4j/apoc/blob/2025.05/core/src/test/resources/testload.tgz?raw=true!person.json");

使用S3、GCS或HDFS协议

要使用这些协议中的任何一个,需要分别下载额外的依赖项jar包,并将其复制到插件目录 <NEO4J_HOME>/plugins 中。

表1. AWS依赖jar包 (S3)
AWS依赖jar包 APOC版本

apoc-aws-dependencies-5.16.jar

5.16

apoc-aws-dependencies-5.15.jar

5.15

apoc-aws-dependencies-5.14.jar

5.14

apoc-aws-dependencies-5.13.jar

5.13

apoc-aws-dependencies-5.12.jar

5.12

apoc-aws-dependencies-5.11.jar

5.11

apoc-aws-dependencies-5.10.jar

5.10

表2. GCS依赖jar包
GCS依赖jar包 APOC版本

apoc-gcs-dependencies-5.16.jar

5.16

apoc-gcs-dependencies-5.15.jar

5.15

apoc-gcs-dependencies-5.14.jar

5.14

apoc-gcs-dependencies-5.13.jar

5.13

apoc-gcs-dependencies-5.12.jar

5.12

apoc-gcs-dependencies-5.11.jar

5.11

apoc-gcs-dependencies-5.10.jar

5.10

表3. HDFS依赖jar包
HDFS依赖jar包 APOC版本

apoc-hadoop-dependencies-5.16.jar

5.16

apoc-hadoop-dependencies-5.15.jar

5.15

apoc-hadoop-dependencies-5.14.jar

5.14

apoc-hadoop-dependencies-5.13.jar

5.13

apoc-hadoop-dependencies-5.12.jar

5.12

apoc-hadoop-dependencies-5.11.jar

5.11

apoc-hadoop-dependencies-5.10.jar

5.10

这些依赖jar包由APOC扩展库维护。此库不受Neo4j支持。

将jar包复制到插件目录后,需要重启数据库。

使用S3协议

使用S3协议

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

使用Google Cloud Storage

Google Cloud Storage URL的格式如下

gs://<桶名称>/<文件路径>

授权类型可以通过一个额外的 authenticationType 查询参数指定

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

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

  • PRIVATE_KEY:用于使用为服务账户生成的私钥(需要设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量,指向一个私钥JSON文件,具体请参阅官方Google文档。)

示例

gs://bucket/test-file.csv?authenticationType=GCP_ENVIRONMENT