命令行工具

OrientDB提供了一个命令行工具,是个JAVA程序连接和操作OrientDB数据库和服务器实例。

命令行模式

OrientDB提供两种模式:交互模式和批量模式。

交互模式

默认以交互模式打开。在这个模式下,会有一个orientdb>提示符。你可以在窗口中执行命令和sql语句。

你可以通过执行bin目录下的console.sh(windows下是bat后缀)脚本打开。运行需要执行权限。

$ cd $ORIENTDB_HOME/bin
$ ./console.sh

OrientDB console v.X.X.X (build 0) www.orientdb.com
Type 'HELP' to display all the commands supported.
Installing extensions for GREMLIN language v.X.X.X

orientdb>

从这里,你可以运行SQL语句和命令了。命令参考commands

批量模式

批量模式下,把命令作为参数传递给console.sh

  • Command-line: 从命令行中执行,将命令以字符串方式,多个命令以分号分隔。

    $ $ORIENTDB_HOME/bin/console.sh "CONNECT REMOTE:localhost/demo;SELECT FROM Profile"
    
  • Script Commands: 把命令放在文本文件中,文件名作为参数。

    $ vim commands.txt
    
      CONNECT REMOTE:localhost/demo;SELECT FROM Profile
    
    $ $ORIENTDB_HOME/bin/console.sh commands.txt
    

忽略错误

在批量模式下,可以通过ignoreErrors忽略执行中的错误继续执行.

$ vim commands.txt

  SET ignoreErrors TRUE

开启echo

批量模式下,执行命令,希望输出执行的信息,在命令行的开头设置echo

$ vim commands.txt

  SET echo TRUE

命令

OrientDB实现了很多SQL语句和命令。你可以使用HELP或者?获取命令的信息。

命令 描述
ALTER CLASS 变更类的模式
ALTER CLUSTER 变更簇的属性
ALTER DATABASE 变更数据库的属性
ALTER PROPERTY 变更类的属性
BACKUP DATABASE 备份数据库
BEGIN 开启一个新事务
BROWSE CLASS 遍历一个类的所有记录
BROWSE CLUSTER 遍历一个簇的所有记录
CLASSES 显示所有的类
CLUSTER STATUS 显示分布式集群中服务器的状态
CLUSTERS 显示所有配置的簇
COMMIT 提交一个激活的事务
CONFIG 显示当前打开的数据库的所有配置
CONFIG GET 返回一个配置的值
CONFIG SET 设置配置
CONNECT 连接数据库
CREATE CLASS 创建一个新类
CREATE CLUSTER 在数据库中创建一个簇
CREATE DATABASE 创建一个新的数据库
CREATE EDGE 创建一个边连接顶点
CREATE INDEX 创建一个索引
CREATE LINK 创建一个连接
CREATE VERTEX 创建一个顶点
DECLARE INTENT 声明数据库的目标
DELETE 使用SQL语法删除记录,SQL语法
DICTIONARY GET 在字典中寻找记录,如果找到设置为当前记录
DICTIONARY PUT 插入或者修改数据库字典中的一条目录,目录由key=String, value=record-id组成
DICTIONARY REMOVE 删除字典中的一条目录
DISCONNECT 断开当前数据库连接
DISPLAY RECORD 显示当前记录的所有属性
DISPLAY RAW RECORD 显示当前记录的原始格式
DROP CLASS 删除类
DROP CLUSTER 删除簇
DROP DATABASE 删除数据库
DROP INDEX 删除索引
DROP PROPERTY 从类的模式中删除属性
EXPLAIN 剖析查询计划
EXPORT DATABASE 导出数据库
EXPORT RECORD 导出记录
FIND REFERENCES 找到关联该记录的所有记录
FREEZE DATABASE 冻结数据库,锁住所有更新。使用这个命令做备份。使用RELEASE DATABASE解冻
GET 返回属性的值
GRANT 给用户赋予权限
GREMLIN 执行Gremlin脚本
IMPORT DATABASE 导入以前导出的数据库
INDEXES 显示索引的信息
INFO 显示当前状态
INFO CLASS 显示类的所有信息
INSERT SQL语法插入一条新纪录,SQL 语法
JS 在当前命令行窗口执行JS脚本
JSS 在服务器上执行JS脚本
LIST DATABASES 列举当前数据库列表
LOAD RECORD 把记录加载到内存并设置成当前记录
PROFILER 控制 剖析器
PROPERTIES 返回所有配置的属性
pwd 显示当前目录
REBUILD INDEX 重建一个索引
RELEASE DATABASE 解锁一个 Console Freeze Database冻结的数据库
RELOAD RECORD 重新加载一条记录到内存,设置为当前记录
RELOAD SCHEMA 加载模式
ROLLBACK 回滚由begin激活的事务
RESTORE DATABASE 恢复一个数据库
SELECT SQL语法的查询语句
REVOKE 撤销一个用户的权限
SET 改变属性的值
SLEEP 在脚本中使用,睡眠一段时间
TRAVERSE 遍历记录的图
TRUNCATE CLASS 清空一个类的所有记录(通过清空类下的所有簇)
TRUNCATE CLUSTER 清空一个簇的所有记录
TRUNCATE RECORD 清空一个因为损坏无法删除的数据
UPDATE SQL语法更新记录
HELP 打印帮助
EXIT 关闭当前命令窗口

自定义命令

除了OrientDB实现的命令,可以自己开发命令。编辑类OConsoleDatabaseApp,增加新的方法。有一个自动发现的机制可以将新增的方法放到可执行命令中,只需要使用注解@ConsoleCommand。命令的名称遵循Java骆驼命名格式。

例如,增加命令MOVE CLUSTER:

@ConsoleCommand(description = "Move the physical location of cluster files")
public void moveCluster(
   @ConsoleParameter(name = "cluster-name", description = "The name or the id of the cluster to remove") String iClusterName,
   @ConsoleParameter(name = "target-path", description = "path of the new position where to move the cluster files") String iNewPath ) {

   checkCurrentDatabase(); // THE DB MUST BE OPENED

   System.out.println("Moving cluster '" + iClusterName + "' to path " + iNewPath + "...");
   }

代码增加后,编译部署启动,MOVE CLUSTER就可以使用HELP来找到。

orientdb> HELP

AVAILABLE COMMANDS:
AVAILABLE COMMANDS:
 * alter class    Alter a class in the database schema
 * alter cluster  Alter class in the database schema
 ...                            ...
 * move cluster                 Move the physical location of cluster files
 ...                            ...
 * help                         Print this help
 * exit                         Close the console

orientdb> MOVE CLUSTER foo /temp

Moving cluster 'foo' to path /tmp...

如果你开发了一个特别有用的命令,可以贡献给社区OrientDB Community!