从Web API加载数据
支持的协议包括 file
、http
、https
、s3
、gs
、hdfs
,并允许重定向。
如果未提供协议,此过程将尝试检查URL是否为文件。
如果启用 apoc.import.file.use_neo4j_config ,过程将分别读取两个配置参数 dbms.security.allow_csv_import_from_file_urls 和 server.directories.import ,以检查文件系统访问是否允许,并可能限制到特定目录。如果您想解除这些限制,请设置 apoc.import.file.use_neo4j_config=false |
过程 | 描述 |
---|---|
|
从URL加载JSON |
|
从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)
从压缩文件加载数据时,我们需要在压缩文件中的文件名或路径前加上 !
字符。例如
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 中。
AWS依赖jar包 | APOC版本 |
---|---|
5.16 |
|
5.15 |
|
5.14 |
|
5.13 |
|
5.12 |
|
5.11 |
|
5.10 |
GCS依赖jar包 | APOC版本 |
---|---|
5.16 |
|
5.15 |
|
5.14 |
|
5.13 |
|
5.12 |
|
5.11 |
|
5.10 |
HDFS依赖jar包 | APOC版本 |
---|---|
5.16 |
|
5.15 |
|
5.14 |
|
5.13 |
|
5.12 |
|
5.11 |
|
5.10 |
这些依赖jar包由APOC扩展库维护。此库不受Neo4j支持。 |
将jar包复制到插件目录后,需要重启数据库。
使用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