Как экспортировать csv-файл большого resultset с помощью cypher в Neo4j в браузере?
Я использую Neo4j в своем браузере на Ubuntu. Я получил более 1 миллиона узлов, и я хочу экспортировать их как csv-файл.
когда размер возвращаемых данных мал, как "match N return n limit 3", есть большая жирная кнопка" Загрузить csv", которую я мог бы использовать. Но когда дело доходит до большого набора результатов, такого как более 1000, оболочка просто говорит "Resultset слишком большой(более 1000 строк)", и кнопка не отображается.
Как экспортировать csv-файлы для большого набора результатов?
6 ответов
вы также можете использовать расширения моей оболочки для экспорта результатов шифрования в CSV.
смотрите здесь: https://github.com/jexp/neo4j-shell-tools#cypher-import
просто предоставьте выход an-o.csv-файл в .
мы следовали подходу, используя упомянул. Это очень хорошо работает для нас. данные правильно отформатированы в формате 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
Ну, я просто использовал 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)
надеюсь, это может помочь.
С уважением
Я знаю, это старый пост, но, возможно, это поможет кому-то еще. Для тех, кто использует Symfony Framework, вы можете сделать довольно простой контроллер для экспорта запросов Neo4j Cypher в CSV. Это использует Graphaware NEO4J PHP OGM ( https://github.com/graphaware/neo4j-php-ogm) для запуска необработанных запросов шифрования. Я думаю, это также можно легко реализовать без 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;
}
Это позволяет загружать CSV с символами utf-8 непосредственно из Вашего браузера и дает вам всю свободу шифрования.
важно: это не имеет проверки запроса, что так когда-либо, и это очень хорошая идея, чтобы настроить соответствующую проверку безопасности или запроса перед использованием :)
шифр-основа:
https://neo4j.com/docs/operations-manual/current/tools/cypher-shell/
который включен в последние версии neo4j делает это легко:
cat query.cql | cypher-shell > answer.csv
ограничение 1000 связано с настройкой браузера MaxRows. Вы можете изменить его на например 10000 и, таким образом, иметь возможность загружать эти 10000 за один раз с помощью кнопки загрузки/экспорта csv, описанной в исходном сообщении. На моем ноутбуке предел для кнопки загрузки находится где-то между 10000 и 20000. Установив предел MaxRows в 50000 или 300000, я смог получить данные на экране после ожидания некоторое время. Ручной выбор, копирование и вставка работ. Однако делать что-либо еще чем закрытие браузера после каждого запроса не было возможно, так как браузер становится очень медленным.