ESql终端¶
可以在Linux终端通过ESql的命令./bin/esql 来执行SQL,该命令除了通过本地ESql来执行SQL以外,还可以通过参数指定到其它ESql服务器上执行SQL语句。
可通过 -h 查看详细的帮助说明:
交互模式¶
开启ESql终端的方法:
./bin/esql # 会提示输入用户名和密码(认证模式)
./bin/esql -u username # 会提示输入密码(认证模式)
./bin/esql -u username -p password # 直接进入esql终端
可输入 exit 退出ESql终端,如:
命令模式¶
如果不想开启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 ------------------------------