【问题标题】:Load CSV from secured S3 bucket into Neo4j running in docker将 CSV 从安全的 S3 存储桶加载到在 docker 中运行的 Neo4j
【发布时间】:2018-03-09 20:28:50
【问题描述】:

是否可以使用 load csv 将数据加载到在 csv 文件位于安全 S3 存储桶中的 docker 容器上运行的 Neo4j 中?如果我将文件本地复制到 docker 容器中,它工作正常。

我不断收到“Neo.ClientError.Statement.ExternalResourceFailed”错误。

neo 配置显示:dbms.security.allow_csv_import_from_file_urls=true

我的代码是使用 py2neo (3.1.2) 的 Python (3.6)。

USING PERIODIC COMMIT 5000
LOAD CSV WITH HEADERS FROM 'https://s3-my-region.amazonaws.com/some-secured-
bucket/somefile.csv' AS row FIELDTERMINATOR ','
MERGE (person:Person {id: row.id})
ON CREATE SET person.first_name = row.first_name
, person.last_name = row.last_name
, person.email = row.email
, person.mobile_phone = row.mobile_phone
, person.business_phone = row.business_phone
, person.business_address = row.business_address
ON MATCH SET person.first_name = row.first_name
, person.last_name = row.last_name
, person.email = row.email
, person.mobile_phone = row.mobile_phone
, person.business_phone = row.business_phone
, person.business_address = row.business_address

任何帮助或示例将不胜感激。

非常感谢。

【问题讨论】:

  • 您是否还注释了 dbms.directories.import=import 行,它强制 csv 文件位于该 import directory 中?并且不要忘记在更改配置文件后重新启动数据库
  • 如果网址是公开的,那么是的...不确定LOAD CSV是否可以处理任何授权
  • 谢谢你们的帮助...我不允许自己更改 dbms.directories.import ...必须等待我们的系统人员完成...但我会的发布结果。
  • 结果是注释掉 dbms.directories.import=import 没有明显影响……不过再次感谢大家的努力。

标签: python csv amazon-s3 neo4j


【解决方案1】:

您也可以使用s3fs 之类的工具将您的存储桶映射为本地文件系统,这样您就可以直接读取文件。只需要 IAM 访问权限。

【讨论】:

    【解决方案2】:

    您可以在 S3 上生成一个有时间限制的签名 URL,而无需将文件公开。

    查看示例

    https://advancedweb.hu/2018/10/30/s3_signed_urls/

    【讨论】:

      【解决方案3】:

      Neo4j “LOAD CSV” 可以使用 http/https url,例如:

      从“https://s3-ap-southeast-2.amazonaws.com/myfile/loadcsv/file.csv”作为行加载带有标题的 CSV 有行限制 3 返回行

      以下配置需要更改

      1. S3 文件夹需要向公众开放
      2. 在 neo4j.conf 中,设置 dbms.security.allow_csv_import_from_file_urls=true
      3. 在 neo4j.conf 中,注释掉或删除 dbms.directories.import=import
      4. 确保防火墙没有阻止 neo4j 端口 [7474、7473、7687]

      【讨论】:

      • 你似乎无法在 AWS 上执行此操作……这意味着 LOAD CSV 不成立。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 2021-08-02
      • 2018-06-25
      • 2020-07-21
      • 2019-12-07
      • 2019-01-06
      相关资源
      最近更新 更多