从Dropbox加载CSV文件到Neo4j

5
我把CSV文件保存在Dropbox上,现在想要在Neo4j上加载它们。
共享的用户节点csv文件链接: https://www.dropbox.com/s/6kibjeea5e4cks1/users.csv?dl=0 这是cypher命令。
USING PERIODIC COMMIT 100
        
LOAD CSV WITH HEADERS FROM "https://www.dropbox.com/s/6kibjeea5e4cks1/users.csv?dl=0" AS line
        
CREATE(u:User{userId: toInt(line.Id), username: line.UserName, fullname: line.FullName})

我使用的Neo4j版本是Neo4j企业版3.0.9。
结果显示,它成功创建了用户节点,但创建了超过300个没有用户名和全名的节点。即使CSV文件中有9个带有用户名和全名的节点。我错过了什么?
我试图将URL从共享链接更改为下载链接,但出现错误无法加载外部资源

我正在使用 Neo4j 3.1.5,并且可以通过 Dropbox 链接重现您的错误。如果我将文件放入 import 文件夹并运行 LOAD CSV 命令从本地文件加载,它将按预期工作。 - Fabio Lamanna
@Fabio,我无法将文件放入导入文件夹,因为Neo4j服务器在Azure上。或者,我能否在部署在Azure上的Neo4j服务器上执行此操作? - ash
3个回答

5

如果你从Dropbox切换到gDrive,这个问题似乎就不再是一个问题了。我将你的CSV文件放在我的Google Drive账户中,它似乎可以正常工作。

USING PERIODIC COMMIT 100
LOAD CSV WITH HEADERS FROM "https://docs.google.com/spreadsheets/d/e/2PACX-1vRANVgt-GZf0Un8dyrf7YPITDgAIBzTwjTcqOu_G7mBhGKOEZskf6Mt2oTdInyQ-wLPE0aOzsW6lVD_/pub?gid=5399540&single=true&output=csv" AS line
CREATE(u:User{userId: toInt(line.Id), username: line.UserName, fullname: line.FullName})

文件 > 发布到网络

enter image description here

  1. 选择您想要的选项卡
  2. 选择csv作为发布格式
  3. 点击发布

然后,您将获得一个公共URL以获取csv文件。

enter image description here


2
是的,它起作用了。你把它公开并获取了共享链接吗? - ash
你能告诉我你是怎么获取这个链接的吗?我尝试按照 https://www.labnol.org/internet/direct-links-for-google-drive/28356/ 上提供的步骤去操作,但好像不起作用。 - ash
1
抱歉,我应该在回答中加上这个。选择“文件 > 发布到网络...”,然后选择你想要的选项卡并选择 CSV 格式,它会为你提供一个公共链接。 - Dave Bennett

4
您正在使用的链接并不是文件本身,而是Dropbox页面以查看该文件:
$ curl -i --raw https://www.dropbox.com/s/6kibjeea5e4cks1/users.csv?dl=0
HTTP/2 302
server: nginx
date: Mon, 24 Jul 2017 14:46:44 GMT
content-type: text/html; charset=utf-8
content-length: 0
location: https://dl.dropboxusercontent.com/content_link/Z2KG0dzjBlHuMnIXyApZvBZFICVBXnLErAeLwlrkH46xnjg5yfd59ZfboKUpCNdo/file

你应该尝试使用文件直接链接:
$ curl -i --raw https://dl.dropboxusercontent.com/content_link/Z2KG0dzjBlHuMnIXyApZvBZFICVBXnLErAeLwlrkH46xnjg5yfd59ZfboKUpCNdo/file
HTTP/2 200
server: nginx
date: Mon, 24 Jul 2017 14:47:46 GMT
content-type: text/csv; charset=utf-8
content-length: 231

我已经尝试过了,但是出现了无法加载CSV文件的错误。 - ash

3
这是因为链接https://www.dropbox.com/s/6kibjeea5e4cks1/users.csv?dl=0返回了HTML页面而不是CSV文件。请看以下Cypher查询:
LOAD CSV WITH HEADERS FROM "https://www.dropbox.com/s/6kibjeea5e4cks1/users.csv?dl=0" AS line
RETURN line LIMIT 3

输出结果:
╒══════════════════════════════════════════════════════════════════════╕
│"line"                                                                │
╞══════════════════════════════════════════════════════════════════════╡
│{"<!DOCTYPE html><html lang=\"en\" xmlns:fb=\"http://ogp.me/ns/fb#\" x│
│ml:lang=\"en\" class=\"maestro\" xmlns=\"http://www.w3.org/1999/xhtml\│
│">":"<head><link href=\"https://cfl.dropboxstatic.com/static/css/accou│
│nt/emails-vflCV9b0W.css\" type=\"text/css\" crossorigin=\"anonymous\" │
│rel=\"stylesheet\" />"}                                               │
├──────────────────────────────────────────────────────────────────────┤
│{"<!DOCTYPE html><html lang=\"en\" xmlns:fb=\"http://ogp.me/ns/fb#\" x│
│ml:lang=\"en\" class=\"maestro\" xmlns=\"http://www.w3.org/1999/xhtml\│
│">":"<link href=\"https://cfl.dropboxstatic.com/static/css/deprecated/│
│components/multiaccount_login_modal-vflNhUM8J.css\" type=\"text/css\" │
│crossorigin=\"anonymous\" rel=\"stylesheet\" />"}                     │
├──────────────────────────────────────────────────────────────────────┤
│{"<!DOCTYPE html><html lang=\"en\" xmlns:fb=\"http://ogp.me/ns/fb#\" x│
│ml:lang=\"en\" class=\"maestro\" xmlns=\"http://www.w3.org/1999/xhtml\│
│">":"<link href=\"https://cfl.dropboxstatic.com/static/css/font_paper_│
│atlas_grotesk-vflEbKJso.css\" type=\"text/css\" crossorigin=\"anonymou│
│s\" rel=\"stylesheet\" />"}                                           │
└──────────────────────────────────────────────────────────────────────┘

为了解决这个问题,可以尝试从DropBox获取直接下载链接(如果可能的话),或者更换其他存储工具。


我在我的问题中提到了这一点。 - ash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接