首页 » MySQL/TiDB/GoldenDB, ORACLE 9i-23ai, PostgreSQL/GaussDB » How to Change in SQL Prompt format in Oracle , MySQL, PostgreSQL(数据库比较系列七)

How to Change in SQL Prompt format in Oracle , MySQL, PostgreSQL(数据库比较系列七)

像UNIX的PS1环境变量可以改变shell操作提示符, 在日常工作环境中可以提升一些效率可以防止一些误操作, 很多年前在看tom关于在练习oracle操作前的一些环境配置像login.sql, 比起”SQL >”还可以显示当前的用户或数据库名很是欣喜, 下面记录Oracle , MySQL, PostgreSQL三个主流数据库改变命令行提示符的方法。

— Oracle
sqlplus中执行set sqlprompt或增加到logoin.sql/global.sql脚本中自动触发
e.g.

col ver  new_value ver
col host new_value host
col inst new_value inst
set termout off
select substr(version,1,instr(version,'.',1,4)) ver,
       upper(instance_name) inst,
       substr(host_name,1,instr(host_name,'.',1,1) - 1) host
 from v$instance;
set termout on
--set sqlprompt "&&ver&&_USER@&&_CONNECT_IDENTIFIER SQL> "
set sqlprompt "&&ver&&_USER@&&host/&&inst SQL> "
set linesize 500 pagesize 2000 timi on
alter session set max_dump_file_size = unlimited;

-- or --

col "_myprompt" new_value myprompt
set termout off
select
    chr(27)||'[31m'||
    substr('&_USER@&_CONNECT_IDENTIFIER'||rtrim(' &_PRIVILEGE')||'/'||
        trunc(&_O_RELEASE/100000000) || '.' ||
        mod(trunc(&_O_RELEASE/1000000),100) || '.' ||
        mod(trunc(&_O_RELEASE/10000),100) || '.' ||
        mod(trunc(&_O_RELEASE/100),100),
        1, 36)
    ||chr(27)||'[m'||chr(10)||'SQL> ' "_myprompt"
from dual;
set termout on
set sqlp "&myprompt"


SQL> @login

Session altered.

Elapsed: 00:00:00.00
19.0.0.0.SYS@/ANBOB19C SQL>


— MySQL
配置MYSQL_PS1 或 配置在/etc/my.cnf or .my.cnf 文件中

The MYSQL_PS1 in this example displays the following three information in the prompt:

  • Generic variables:
    • \S displays semicolon
    • \’ displays single quote
    • \” displays double quote
    • \v displays server version
    • \p displays port
    • \\ displays backslash
    • \n displays newline
    • \t displays tab
    • \ displays space (there is a space after \ )
    • \d displays default database
    • \h displays default host
    • \_ displays space (there is a underscore after \ )
    • \c displays a mysql statement counter. keeps increasing as you type commands.
    • \u displays username
    • \U displays username@hostname accountname

    Date related variables:

    • \D displays full current date (as shown in the above example)
    • \w displays 3 letter day of the week (e.g. Mon)
    • \y displays the two digit year
    • \Y displays the four digit year
    • \o displays month in number
    • \O displays 3 letter month (e.g. Jan)
    • \R displays current time in 24 HR format
    • \r displays current time in 12 hour format
    • \m displays the minutes
    • \s displays the seconds
    • \P displays AM or PM
$ export MYSQL_PS1="\u@\h [\d]> "

$ mysql -u root -pyour-password -D xxxCRM

root@dev-db [XXcrm]>
mysql> prompt (\u@\h) [\d] \R:\m:\s>\_

— postgresql

在gsql中配置set PROMPT1或配置到.psqlrc文件中

vi ~/.psqlrc

\set PROMPT1 '%M:%> %n@%/%R%#%x '
  • %M refers to the database server’s hostname – is “[local]” if the connection is over a Unix domain socket
  • %> refers to the listening port
  • %n refers to the session username
  • %/ refers the current database
  • %R refers to whether you’re in single-line mode (^) or disconnected (!) but is normally =
  • %# refers to whether you’re a superuser (#) or a regular user (>)
  • %x refers to the transaction status – usually blank unless in a transaction block (*)

Colors

The prompt color can be edited with the psqlrc. To make the port number red add the following.

\set PROMPT1 '%M:%[%033[1;31m%]%>%[%033[0m%] %n@%/%R%#%x '

There are various colors you can use – change the value 31 to:

  • 32 for green
  • 33 for yellow
  • 34 for blue
  • 35 for magenta
  • 36 for cyan
  • 37 for white

像UNIX PS1环境的配置参考Bash Shell PS1: 10 Examples to Make Your Linux Prompt like Angelina Jolie

打赏

对不起,这篇文章暂时关闭评论。