Как экспортировать 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, я смог получить данные на экране после ожидания некоторое время. Ручной выбор, копирование и вставка работ. Однако делать что-либо еще чем закрытие браузера после каждого запроса не было возможно, так как браузер становится очень медленным.