diff --git a/cmd/cayley/cayley.go b/cmd/cayley/cayley.go index 77c6cde..6106de4 100644 --- a/cmd/cayley/cayley.go +++ b/cmd/cayley/cayley.go @@ -49,6 +49,8 @@ var ( configFile = flag.String("config", "", "Path to an explicit configuration file.") databasePath = flag.String("dbpath", "/tmp/testdb", "Path to the database.") databaseBackend = flag.String("db", "memstore", "Database Backend.") + dumpFile = flag.String("dump", "dbdump.nq", `Quad file to dump the database to (".gz" supported, "-" for stdout).`) + dumpType = flag.String("dump_type", "json", `Quad file format ("json", "nquad").`) replicationBackend = flag.String("replication", "single", "Replication method.") host = flag.String("host", "127.0.0.1", "Host to listen on (defaults to all).") loadSize = flag.Int("load_size", 10000, "Size of quadsets to load") @@ -72,6 +74,7 @@ Commands: init Create an empty database. load Bulk-load a quad file into the database. http Serve an HTTP endpoint on the given host and port. + dump Bulk-dump the database into a quad file. repl Drop into a REPL of the given query language. version Version information. @@ -204,6 +207,21 @@ func main() { handle.Close() + case "dump": + handle, err = db.Open(cfg) + if err != nil { + break + } + if !graph.IsPersistent(cfg.DatabaseType) { + err = internal.Load(handle.QuadWriter, cfg, *quadFile, *quadType) + if err != nil { + break + } + } + + // internal.Dump() + handle.Close() + case "repl": handle, err = db.Open(cfg) if err != nil {