我在Ubuntu上的浏览器上使用Neo4j。我有超过100万个节点,我想将它们导出为csv文件。
当返回数据大小很小时,如#34;匹配n返回n限制3"有一个很大的脂肪"下载csv"我可以用的按钮。但是当涉及超过1000的大结果集时,shell只会说"结果集太大(超过1000行)"并且按钮不会显示。
如何为大型结果集导出csv文件?
答案 0 :(得分:4)
您还可以使用我的shell扩展将cypher结果导出为CSV。
见这里:https://github.com/jexp/neo4j-shell-tools#cypher-import
只需向import-cypher
命令提供-o output.csv文件。
答案 1 :(得分:2)
好吧,我只是用linux shell来完成所有工作。
neo4j-shell -file query.cql | sed 's/|/;/g' > myfile.csv
在我的情况下,我还要将UTF-8转换为ISO-8859-1,因此我键入了:
neo4j-shell -file query.cql | sed 's/|/;/g' | iconv -f UTF-8 -t ISO-8859-1 -o myfile.csv
PS:sed执行替换:'s / | /; / g'表示替换所有“|”至 ”;”即使每行有多个(g)
希望这可以提供帮助 此致
答案 2 :(得分:2)
我们按照下面的方法使用了提到的。它对我们很有用。 数据以csv格式正确格式化。
https://github.com/jexp/neo4j-shell-tools#cypher-import
import-cypher command from neo4J shell.
neo4j-sh (?)$ import-cypher -o test.csv MATCH (m:TDSP) return m.name
答案 3 :(得分:0)
我知道这是一个老帖子,但也许这会帮助别人。对于使用Symfony Framework的任何人,您可以创建一个非常简单的控制器来将Neo4j Cypher Queries导出为CSV。这使用Graphaware NEO4J PHP OGM(https://github.com/graphaware/neo4j-php-ogm)来运行原始cypher查询。我想这也可以在没有Symfony的情况下轻松实现,只使用普通的PHP。
只需制作一张表格(如果你愿意,可以使用树枝):
<form action="{{ path('admin_exportquery') }}" method="get">
Cypher:<br>
<textarea name="query"></textarea><br>
<input type="submit" value="Submit">
</form>
然后设置“admin_exportquery”的路由指向控制器。并添加一个控制器来处理导出:
public function exportQueryAction(Request $request)
{
$query = $request->query->get('query');
$em = $this->get('neo4j.graph_manager')->getClient();
$response = new StreamedResponse(function() use($em,$query) {
$result = $em->getDatabaseDriver()->run($query);
$handle = fopen('php://output', 'w');
fputs( $handle, "\xEF\xBB\xBF" );
$header = $result->getRecords()[0]->keys();
fputcsv($handle, $header);
foreach($result->getRecords() as $r){
fputcsv($handle, $r->values());
}
fclose($handle);
});
$response->headers->set('Content-Type', 'application/force-download');
$response->headers->set('Cache-Control', 'no-store, no-cache');
$response->headers->set('Content-Disposition','attachment; filename="export.csv"');
return $response;
}
这使您可以直接从浏览器下载带有utf-8字符的CSV,并为您提供Cypher的所有自由。
重要提示:这没有查询,所以在使用之前设置适当的安全性或查询检查是一个非常好的主意:)
答案 4 :(得分:0)
cypher-shell:
private class Bot(val number: Int,
private var low: Int?,
private var high: Int?) {
...
}
最新版本的neo4j中包含的可以轻松完成此任务:
https://neo4j.com/docs/operations-manual/current/tools/cypher-shell/
答案 5 :(得分:0)
限制1000是由浏览器MaxRows设置引起的。您可以将其更改为例如 10000,从而可以通过原始帖子中描述的下载/导出csv按钮一次性下载10000个。在我的笔记本电脑上,下载按钮的限制介于10000和20000之间。 通过将MaxRows限制设置为50000或300000,我可以在等待一段时间后在屏幕上获取数据。手动选择,复制和粘贴工作。但是,除了浏览器变得非常慢之外,还不能在每次查询后关闭浏览器。
答案 6 :(得分:0)
还有另一种方法,可以使用带有http / https neo4j transaction/commit
端点的cURL命令将数据导出为CSV。
这是有关此操作的示例。
curl -H accept:application/json -H content-type:application/json \
-d '{"statements":[{"statement":"MATCH (p1:PROFILES)-[:RELATION]-(p2) RETURN ... LIMIT 4"}]}' \
http://localhost:7474/db/data/transaction/commit \
| jq -r '(.results[0]) | .columns,.data[].row | @csv'
,此命令使用jq
。确保您的计算机中安装了jq
,并将结果转换为CSV格式。
注意:您可能需要在标头中传递授权以进行身份验证。
只需传递-H 'Authorization: Basic XXXXX=' \
即可避免401
这是带有详细说明的博客。 https://neo4j.com/blog/export-csv-from-neo4j-curl-cypher-jq/