从 Web-APIs 加载数据
支持的协议包括 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 |
|
从 XML URL(例如 web-api)加载,将 XML 导入为单个嵌套映射,包含属性以及 |
|
从 URL 加载 CSV 作为值流 |
|
从 URL 加载 XLS 作为值流 |
从压缩文件加载单个文件 (zip/tar/tar.gz/tgz)
从压缩文件加载数据时,我们需要在压缩文件中的文件名前或路径前加上 !
字符。例如
apoc.load.csv("pathToCompressedFile/file.zip!pathToCsvFileInZip/fileName.csv")
使用 S3 协议
使用 S3 协议时,需要下载以下 jar 包并复制到 plugins 目录中
-
aws-java-sdk-core-1.12.136.jar (https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-core/1.12.136)
-
aws-java-sdk-s3-1.12.136.jar (https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-s3/1.12.136)
-
httpclient-4.5.13.jar (https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient/4.5.13)
-
httpcore-4.4.15.jar (https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore/4.4.15)
-
joda-time-2.10.13.jar (https://mvnrepository.com/artifact/joda-time/joda-time/2.10.13)
复制这些文件后,需要重新启动数据库。
S3 URL 必须采用以下格式
-
s3://accessKey:secretKey[:sessionToken]@endpoint:port/bucket/key
(其中 sessionToken 是可选的)或 -
s3://endpoint:port/bucket/key?accessKey=accessKey&secretKey=secretKey[&sessionToken=sessionToken]
(其中 sessionToken 是可选的)或 -
如果 accessKey、secretKey 和可选的 sessionToken 在环境变量中提供,则为
s3://endpoint:port/bucket/key
不检查 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
并且会在 neo4j-apoc-procedures/extra-dependencies/hadoop/build/lib
文件夹中创建一个名为 apoc-hadoop-dependencies-5.26.1.jar
的 jar 包。
下载/创建该文件后,应将其放置在 plugins
目录中,并重新启动 Neo4j 服务器。
使用 Google Cloud Storage
为了使用 Google Cloud Storage,您需要在 plugins 目录中添加以下 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,其中包含上述依赖项,以简化过程。您可以从此处下载并复制到您的 plugins 目录中。
您可以通过以下 url 格式使用 Google Cloud storage
gs://<bucket_name>/<file_path>
此外,您还可以通过一个额外的 authenticationType
查询参数指定授权类型
-
NONE
:用于公共存储桶(如果未指定参数,这是默认行为) -
GCP_ENVIRONMENT
:用于 Neo4j 在 Google Cloud 中作为服务账号的被动身份验证 -
PRIVATE_KEY
:用于使用为服务账号生成的私钥(需要设置指向私钥 json 文件的GOOGLE_APPLICATION_CREDENTIALS
环境变量,具体说明见此处:https://cloud.google.com/docs/authentication#strategies)
示例
gs://andrea-bucket-1/test-privato.csv?authenticationType=GCP_ENVIRONMENT