Procedure Apoc Extended

apoc.cypher.runSchemaFile(file or url,[{statistics:true,timeout:10}]) - allows only schema operations, runs each schema statement in the file, all semicolon separated


apoc.cypher.runSchemaFile(file :: STRING?, config = {} :: MAP?) :: (row :: INTEGER?, result :: MAP?)

Input parameters

Name Type Default







Output parameters

Name Type





Reading from a file

By default importing from the file system is disabled. We can enable it by setting the following property in apoc.conf:


If we try to use any of the import procedures without having first set this property, we’ll get the following error message:

Failed to invoke procedure: Caused by: java.lang.RuntimeException: Import from files not enabled, please set apoc.import.file.enabled=true in your apoc.conf

Import files are read from the import directory, which is defined by the server.directories.import property. This means that any file path that we provide is relative to this directory. If we try to read from an absolute path, such as /tmp/filename, we’ll get an error message similar to the following one:

Failed to invoke procedure: Caused by: java.lang.RuntimeException: Can’t read url or key file:/path/to/neo4j/import/tmp/filename as json: /path/to/neo4j//import/tmp/filename (No such file or directory)

We can enable reading files from anywhere on the file system by setting the following property in apoc.conf:


Neo4j will now be able to read from anywhere on the file system, so be sure that this is your intention before setting this property.

Usage Examples

The examples in this section are based on the following file:

CREATE INDEX FOR (n:Node) ON (n.id);

We can run the Cypher commands in schema.cypher, by running the following query:

CALL apoc.cypher.runSchemaFile("schema.cypher");
Table 1. Results
row result


{constraintsRemoved: 0, indexesRemoved: 0, nodesCreated: 0, rows: 0, propertiesSet: 0, labelsRemoved: 0, relationshipsDeleted: 0, constraintsAdded: 0, nodesDeleted: 0, indexesAdded: 1, labelsAdded: 0, relationshipsCreated: 0, time: 0}

If we don’t want to see statistics for each Cypher statement, we can set statistics: false:

CALL apoc.cypher.runSchemaFile("schema.cypher", {statistics: false});
Table 2. Results
row result