Impala-shell 运行SQL语句


以下是在impala-shell.

  • 要查看完整的可用命令集,请按两次TAB
  • 要循环浏览和编辑以前的命令,请单击向上箭头键和向下箭头键。
  • 使用GNUReadline库中的标准键盘快捷键集进行编辑和光标移动,例如Ctrl-A用于行首,Ctrl-E用于行尾。
  • 命令和SQL语句必须以分号结束。
  • 命令和SQL语句可以跨越多行。

使用--来表示一个单行注释和/**/来表示一个多行注释。

注释被认为是它前面的语句的一部分,因此当您输入a--/**/注释时,您会收到继续提示,直到您输入以分号结尾的语句为止。例如:

[impala] > -- This is a test comment
                  > SHOW TABLES LIKE 't*';
  • 如果注释包含并且它不是用于变量替换,则必须对字符进行转义,例如。${variable_name}$--\${hello}

impala-shell中的变量替换

在Impala2.5及更高版本中,您可以定义在impala-shell处理的SQL语句中使用的替换变量。

  1. 您可以按如下方式指定变量及其值。
    1. 在命令行上,您指定选项--var=variable_name=value
    2. -f选项处理的交互式会话或脚本文件中,使用该命令。SETVAR:variable_name=value
  2. 使用impala-shell符号在会话中的SQL语句中使用上述变量:。${VAR:variable_name}

注意:因为此功能是impala-shell而不是impalad后端的一部分,请确保您正在连接的客户端系统具有最新的impala-shell。您可以将此功能与连接到旧impalad的新impala-shell一起使用,但反过来不行。

例如,这里有一些impala-shell命令,它们定义了替换变量,然后在通过-q-f选项执行的SQL语句中使用它们。注意-q参数字符串是如何用单引号引起来的,以防止${var:value}符号的外壳扩展,并且查询中的任何字符串文字都用双引号括起来。

$ impala-shell --var=tname=table1 --var=colname=x --var=coltype=string -q 'CREATE TABLE ${var:tname} (${var:colname} ${var:coltype}) STORED AS PARQUET'
Query: CREATE TABLE table1 (x STRING) STORED AS PARQUET

下面的示例显示了由--var选项传入的替换变量,然后由交互发出的语句引用。然后使用SET命令重置变量。

$ impala-shell --quiet --var=tname=table1
[impala] > SELECT COUNT(*) FROM ${var:tname};
[impala] > SET VAR:tname=table2;
[impala] > SELECT COUNT(*) FROM ${var:tname};