All Projects → cleishm → Libneo4j Client

cleishm / Libneo4j Client

Licence: apache-2.0
neo4j-client -- Neo4j Command Line Interface (CLI)

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Libneo4j Client

Movies Java Bolt
Neo4j Movies Example application with SparkJava backend using the neo4j-java-driver
Stars: ✭ 66 (-45.45%)
Mutual labels:  graph, neo4j, graph-database
Bolt sips
Neo4j driver for Elixir
Stars: ✭ 204 (+68.6%)
Mutual labels:  neo4j, graph-database, driver
Neo4j sips
Elixir driver for the Neo4j graph database server
Stars: ✭ 78 (-35.54%)
Mutual labels:  neo4j, graph-database, driver
Movies Javascript Bolt
Neo4j Movies Example with webpack-in-browser app using the neo4j-javascript-driver
Stars: ✭ 123 (+1.65%)
Mutual labels:  graph, neo4j, graph-database
Neo4j Php Ogm
Neo4j Object Graph Mapper for PHP
Stars: ✭ 151 (+24.79%)
Mutual labels:  graph, neo4j, graph-database
Movies Python Bolt
Neo4j Movies Example application with Flask backend using the neo4j-python-driver
Stars: ✭ 197 (+62.81%)
Mutual labels:  graph, neo4j, graph-database
Neo4j
Graphs for Everyone
Stars: ✭ 9,582 (+7819.01%)
Mutual labels:  graph, neo4j, graph-database
Reddit Detective
Play detective on Reddit: Discover political disinformation campaigns, secret influencers and more
Stars: ✭ 129 (+6.61%)
Mutual labels:  graph, neo4j, graph-database
Neo4j Core
A simple unified API that can access both the server and embedded Neo4j database. Used by the neo4j gem
Stars: ✭ 99 (-18.18%)
Mutual labels:  neo4j, graph-database, driver
Neo4j 3d Force Graph
Experiments with Neo4j & 3d-force-graph https://github.com/vasturiano/3d-force-graph
Stars: ✭ 159 (+31.4%)
Mutual labels:  graph, neo4j, graph-database
Neo4j Python Driver
Neo4j Bolt driver for Python
Stars: ✭ 607 (+401.65%)
Mutual labels:  neo4j, graph-database, driver
Indradb
A graph database written in rust
Stars: ✭ 1,035 (+755.37%)
Mutual labels:  graph, graph-database
Neo4j Tableau
Neo4j Tableau Integration via WDC
Stars: ✭ 56 (-53.72%)
Mutual labels:  neo4j, graph-database
Neo4j Helm
Helm Charts for running Neo4j on Kubernetes
Stars: ✭ 43 (-64.46%)
Mutual labels:  graph, neo4j
Neo4j Symfony
Symfony Bundle for the Neo4j Graph Database
Stars: ✭ 69 (-42.98%)
Mutual labels:  neo4j, graph-database
Neo4j Apoc Procedures
Awesome Procedures On Cypher for Neo4j - codenamed "apoc"                     If you like it, please ★ above ⇧            
Stars: ✭ 1,291 (+966.94%)
Mutual labels:  neo4j, graph-database
Redisgraph
A graph database as a Redis module
Stars: ✭ 1,292 (+967.77%)
Mutual labels:  graph, graph-database
R2d2 Cypher
Cypher support for the r2d2 connection pool
Stars: ✭ 8 (-93.39%)
Mutual labels:  neo4j, graph-database
Neo4jupyter
A quick visualization tool for Jupyter and Neo4J
Stars: ✭ 85 (-29.75%)
Mutual labels:  graph, neo4j
Cog
A Persistent Embedded Graph Database for Python
Stars: ✭ 90 (-25.62%)
Mutual labels:  graph, graph-database

neo4j-client

About

neo4j-client is a command shell (CLI) for Neo4j. It supports secure connections to Neo4j server, sending of statements (including multiline statements), persistent command history, and rendering of results to tables or CSV.

neo4j-client utilizes the Bolt Network Protocol, and will work with any server that supports Bolt.

For more details, see the project page and the FAQ.

Requirements

neo4j-client is known to work on GNU/Linux, Mac OS X and FreeBSD. It requires neo4j 3.0.0 or later.

Getting Started

If you're using Mac OS X, neo4j-client can be installed using homebrew:

$ brew install cleishm/neo4j/neo4j-client

If you're using Ubuntu, neo4j-client can be install using APT:

$ sudo add-apt-repository ppa:cleishm/neo4j
$ sudo apt-get update
$ sudo apt-get install neo4j-client libneo4j-client-dev

There are also packages available for other platforms, including Debian, Fedora, CentOS and openSUSE.

Otherwise, please see Building below.

neo4j-client Usage

Example interactive usage:

$ neo4j-client -u neo4j localhost
The authenticity of host 'localhost:7687' could not be established.
TLS certificate fingerprint is ded0fd2e893cd0b579f47f7798e10cb68dfa2fd3bc9b3c973157da81bab451d74f9452ba99a9c5f66dadb8a360959e5ebd8abb2d7c81230841e60531a96d268.
Would you like to trust this host (NO/yes/once)? yes
Password: *****
neo4j> :help
Enter commands or cypher statements at the prompt.

Commands always begin with a colon (:) and conclude at the end of the line,
for example `:help`. Statements do not begin with a colon (:), may span
multiple lines, are terminated with a semi-colon (;) and will be sent to
the Neo4j server for evaluation.

Available commands:
:quit                  Exit the shell
:connect '<url>'       Connect to the specified URL
:connect host [port]   Connect to the specified host (and optional port)
:disconnect            Disconnect the client from the server
:export                Display currently exported parameters
:export name=val ...   Export parameters for queries
:unexport name ...     Unexport parameters for queries
:reset                 Reset the session with the server
:set                   Display current option values
:set option=value ...  Set shell options
:unset option ...      Unset shell options
:status                Show the client connection status
:help                  Show usage information
:format (table|csv)    Set the output format
:width (<n>|auto)      Set the number of columns in the table output

For more information, see the neo4j-client(1) manpage.
neo4j>
neo4j> :status
Connected to 'neo4j://[email protected]:7687'
neo4j>
neo4j> MATCH (n:Person) RETURN n LIMIT 3;
+----------------------------------------------------------------------------+
| n                                                                          |
+----------------------------------------------------------------------------+
| (:Person{born:1964,name:"Keanu Reeves"})                                   |
| (:Person{born:1967,name:"Carrie-Anne Moss"})                               |
| (:Person{born:1961,name:"Laurence Fishburne"})                             |
+----------------------------------------------------------------------------+
neo4j>
neo4j> :set
 echo=off           // echo non-interactive commands before rendering results
 insecure=no        // do not attempt to establish secure connections
 format=table       // set the output format (`table` or `csv`).
 outfile=           // redirect output to a file
 username="neo4j"   // the default username for connections
 width=auto         // the width to render tables (`auto` for term width)
neo4j>
neo4j> :quit
$

Example non-interactive usage:

$ echo "MATCH (n:Person) RETURN n.name AS name, n.born AS born LIMIT 3" | \
        neo4j-client -u neo4j -P localhost > result.csv
Password: *****
$
$ cat result.csv
"name","born"
"Keanu Reeves",1964
"Carrie-Anne Moss",1967
"Laurence Fishburne",1961
$

Evaluating source files, e.g.:

$ cat query.cyp
:set echo
:export name='Emil'

// Create a person node if it doesn't exist
begin;
MERGE (:Person {name: {name}});
commit;

// return the total number of people
MATCH (n:Person)
RETURN count(n);
$
$ neo4j-client -u neo4j -p pass -o result.out -i query.cyp
$ cat result.out
+:export name='Emil'
+begin;
+MERGE (:Person {name: {name}});
Nodes created: 1
Properties set: 1
Labels added: 1
+commit;
+MATCH (n:Person)
 RETURN count(n);
"count(n)"
137
$

libneo4j-client

libneo4j-client is a client library for Neo4j, written in C, and intended as a foundation on which basic tools and drivers for various languages may be built. libneo4j-client takes care of all the detail of establishing a session with a Neo4j server, sending statements for evaluation, and retrieving results.

libneo4j-client provides a single C header file, neo4j-client.h, for inclusion in source code using the libneo4j-client API. The API is described in the API Documentation.

libneo4j-client can be included in your project by linking the library at compile time, typically using the linking flags -lneo4j-client -lssl -lcrypto -lm. Alternatively, libneo4j-client ships with a pkg-config description file, enabling you to obtain the required flags using pkg-config --libs libneo4j-client.

API Documentation

API documentation for the latest release is available at https://neo4j-client.net/doc/latest/neo4j-client_8h.html.

Documentation can be built using make doc, which will use doxygen to generate documentation and output it into the doc/ directory of the libneo4j-client source tree. See Building below.

Example

#include <neo4j-client.h>
#include <errno.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    neo4j_client_init();

    /* use NEO4J_INSECURE when connecting to disable TLS */
    neo4j_connection_t *connection =
            neo4j_connect("neo4j://user:[email protected]:7687", NULL, NEO4J_INSECURE);
    if (connection == NULL)
    {
        neo4j_perror(stderr, errno, "Connection failed");
        return EXIT_FAILURE;
    }

    neo4j_result_stream_t *results =
            neo4j_run(connection, "RETURN 'hello world'", neo4j_null);
    if (results == NULL)
    {
        neo4j_perror(stderr, errno, "Failed to run statement");
        return EXIT_FAILURE;
    }

    neo4j_result_t *result = neo4j_fetch_next(results);
    if (result == NULL)
    {
        neo4j_perror(stderr, errno, "Failed to fetch result");
        return EXIT_FAILURE;
    }

    neo4j_value_t value = neo4j_result_field(result, 0);
    char buf[128];
    printf("%s\n", neo4j_tostring(value, buf, sizeof(buf)));

    neo4j_close_results(results);
    neo4j_close(connection);
    neo4j_client_cleanup();
    return EXIT_SUCCESS;
}

Building

To use neo4j-client or libneo4j-client, consider installation using the package management system for your operating system (currently Mac OS X, Debian, Ubuntu, Fedora, CentOS and openSUSE).

If neo4j-client is not available via your package management system, please download the latest release, unpack and then:

$ ./configure
$ make clean check
$ sudo make install

libneo4j-client requires OpenSSL, although this can be disabled by invoking configure with --without-tls.

neo4j-client also requires some dependencies to build, including libedit and libcypher-parser. If these are not available, just the library can be built (without neo4j-client), by invoking configure with --disable-tools.

Building from the GitHub repository requires a few extra steps. Firstly, some additional tooling is required, including autoconf, automake and libtool. Assuming these are available, to checkout from GitHub and build:

$ git clone https://github.com/cleishm/libneo4j-client.git
$ cd libneo4j-client
$ ./autogen.sh
$ ./configure
$ make clean check
$ sudo make install

If you encounter warnings or errors during the build, please report them at https://github.com/cleishm/libneo4j-client/issues. If you wish to proceed dispite warnings, please invoke configure with the --disable-werror.

NOTE: Recent versions of Mac OS X ship without the OpenSSL header files, and autoconf doesn't pick this up (yet). If you used the homebrew install method, this will resolve the issue. If you're using Mac OS X, want to build manually instead of using homebrew, and you get a build failure related to missing openssl headers, try the following:

$ brew install openssl
$ ./configure --with-libs=/usr/local/opt/openssl
$ make clean check
$ sudo make install

More detail about this workaround can be found via brew info openssl.

Support

Having trouble with neo4j-client? Please raise any issues with usage on StackOverflow. If you've found a bug in the code, please raise an issue on GitHub and include details of how to reproduce the bug.

Contributing

Contributions to neo4j-client are encouraged and should be made via pull requests made to the GitHub repository. Please include test cases where possible, and use a style and approach consistent with the rest of the library.

It may be worthwhile raising an issue on github for the contribution you intend to make before developing the code, to allow for discussion and feedback on the requirements.

License

neo4j-client is licensed under the Apache License, Version 2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].