ESql终端

可以在Linux终端通过ESql的命令./bin/esql 来执行SQL,该命令除了通过本地ESql来执行SQL以外,还可以通过参数指定到其它ESql服务器上执行SQL语句。

可通过 -h 查看详细的帮助说明:

../_images/cli_help.png

交互模式

开启ESql终端的方法:

./bin/esql                          # 会提示输入用户名和密码(认证模式)
./bin/esql -u username              # 会提示输入密码(认证模式)
./bin/esql -u username -p password  # 直接进入esql终端

可输入 exit 退出ESql终端,如:

../_images/cli_interaction.png

命令模式

如果不想开启ESql终端,而是通过./bin/esql命令直接执行SQL语句,可以通过参数 -e 实现,如:

./bin/esql -u username -p password -e "show tables;"

免认证模式可以不指定用户名和密码。认证模式如果不指定用户名和密码,则会出现输入提示符。

批量执行(文件导入)

  • 可以在ESql终端直接粘贴多条SQL记录(每条语句之间必须有换行符),ESql会依次执行。
  • 也可以通过管道命令直接执行SQL文件内的所以SQL,该模式不会输出每条SQL语句的执行的详细结果(只有成功与否)。

样例:

echo "create table tbl_file.test(name string);" > tbl_file_test.sql
echo "bulk into tbl_file.test(name) values ('record 1'), ('record 2');" >> tbl_file_test.sql
echo "flush tbl_file;" >> tbl_file_test.sql

# 认证模式必须指定用户名
./bin/esql -u username < tbl_file_test.sql

输出结果如下:

ESQL v3.0.18-5747 @ 127.0.0.1:8001

Password:

--------------------------------------------------

create table tbl_file.test(name string);

Success

--------------------------------------------------

bulk into tbl_file.test(name) values ('record 1'), ('record 2');

Success

--------------------------------------------------

flush tbl_file;

Success

====================== END =======================

文件导出

导出表名 tbl 开头的所有表的建表语句到 export.sql 文件:

# 免认证模式可以省去 -u root
./bin/esql -u root -d export.sql -f tbl*

输出的 export.sql 文件内容如下:

------------- SQL dumped by ESql V3.0.18-5747 with ES v1.7.3 --------------


-- DROP TABLE tbl_file;

CREATE TABLE tbl_file.test(
    name STRING     -- {index=not_analyzed}
) with 5, 1;


------------------------------ DUMP END ------------------------------