PL/HQL主要是經過命令行工具來執行一個SQL查詢語句或者是一個SQL腳本。sql
進入hplsql-0.3.11,執行./ hplsql便可顯示命令行的用法:函數
- [liuxiaowen@dev hplsql-0.3.11]$ ./hplsql
- usage: hplsql
- -d,--define <key=value> Variable subsitution e.g. -d A=B or --define A=B
- -e HPL/SQL from command line
- -f HPL/SQL from a file
- -H,--help Print help information
- --hiveconf <property=value> Value for given property
- --hivevar <key=value> Variable subsitution e.g. --hivevar A=B
- -main Entry point (procedure or function name)
- -offline,--offline Offline mode - skip SQL execution
- -trace,--trace Print debug information
- -version,--version Print HPL/SQL version
1.1 -d,–define
-d,–define <key=value> 選項能夠指定變量名及變量值,它和–hiveconf <property=value>以及–hivevar <key=value>的效果等價。工具
- [liuxiaowen@dev hplsql-0.3.11]$ ./hplsql -e "PRINT a || ', ' || b" -d a=Hello -d b=lxw1234.com
- Hello, lxw1234.com
- [liuxiaowen@dev hplsql-0.3.11]$ ./hplsql -e "PRINT a || ', ' || b" --hiveconf a=Hello --hiveconf b=lxw1234.com
- Hello, lxw1234.com
- [liuxiaowen@dev hplsql-0.3.11]$ ./hplsql -e "PRINT a || ', ' || b" --hivevar a=Hello --hivevar b=lxw1234.com
- Hello, lxw1234.com
1.2 -e <quoted-query-string>
同hive –e,用於執行HQL語句;大數據
- [liuxiaowen@dev hplsql-0.3.11]$ ./hplsql -e "SELECT * FROM liuxiaowen.dual"
- Open connection: jdbc:hive2://172.16.212.17:10000 (109 ms)
- Starting query
- Query executed successfully (182 ms)
- X
- [liuxiaowen@dev hplsql-0.3.11]$ ./hplsql -e "PRINT 'Hello, lxw1234.com'"
- Hello, lxw1234.com
1.3 –f <filename>
同hive –f,執行一個文件中保存的HQL語句。atom
- [liuxiaowen@dev hplsql-0.3.11]$ cat lxw1234.sql
- PRINT 'Hello, lxw1234.com';
- SELECT * FROM liuxiaowen.dual;
- [liuxiaowen@dev hplsql-0.3.11]$ ./hplsql -f lxw1234.sql
- Hello, lxw1234.com
- Open connection: jdbc:hive2://172.16.212.17:10000 (109 ms)
- Starting query
- Query executed successfully (165 ms)
- X
1.4 -trace,–trace
打印debug信息。spa
- [liuxiaowen@dev hplsql-0.3.11]$ ./hplsql -e "PRINT 'Hello, lxw1234.com'" -trace
- Configuration file: file:/home/liuxiaowen/hplsql-0.3.11/hplsql-site.xml
- Parser tree: (program (block (stmt (print_stmt PRINT (expr (expr_atom (string 'Hello, lxw1234.com')))))))
- Ln:1 PRINT
- Hello, lxw1234.com
1.5 –main <procname>
-main <procname>.net
只執行指定函數或存儲過程內的語句。命令行
好比:lxw1234.sql文件內容以下:debug
- [liuxiaowen@dev hplsql-0.3.11]$ cat lxw1234.sql
- CREATE PROCEDURE set_message(IN arg STRING)
- BEGIN
- SET result = 'Hello, lxw的大數據田地!';
- PRINT result || ' ' || arg;
- END;
-
- PRINT 'Hello, lxw1234.com! at beginning .. ';
- CALL set_message(' by CALL ..');
- SELECT * FROM liuxiaowen.dual;
-
1.建立存儲過程set_message;orm
2.打印’Hello, lxw1234.com! at beginning .. ‘;
3.調用存儲過程,並傳入參數;
4.查詢Hive表liuxiaowen.dual;
看看使用-main選項和不使用的執行結果:
- [liuxiaowen@dev hplsql-0.3.11]$ ./hplsql -f lxw1234.sql
- Hello, lxw1234.com! at beginning ..
- Hello, lxw的大數據田地! by CALL ..
- Open connection: jdbc:hive2://172.16.212.17:10000 (125 ms)
- Starting query
- Query executed successfully (166 ms)
- X
- [liuxiaowen@dev hplsql-0.3.11]$ ./hplsql -f lxw1234.sql -main set_message
- Hello, lxw的大數據田地!
-
若是不指定-main選項,那麼則將lxw1234.sql中的語句從頭至尾執行完。
若是指定了-main選項,則會執行指定存儲過程內的語句。
-H,–help爲打印幫助信息。-version,–version 打印HPL/SQL版本。
-offline,–offline選項的功能還未搞明白。