首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >常用查询的psql快捷方式?(如Unix的“别名”)

常用查询的psql快捷方式?(如Unix的“别名”)
EN

Stack Overflow用户
提问于 2013-04-26 07:45:47
回答 5查看 2.6K关注 0票数 11

有没有可能以某种方式在psql中创建别名(比如Unix alias命令)?

我的意思是,不是SQL函数,而是本地别名,以简化手动查询?

EN

Stack Overflow用户

发布于 2019-05-08 21:56:26

如果您需要从命令行(而不是psql cli)运行频繁的查询,这可能会有所帮助。

将其添加到.bash_profile /.bashrc

代码语言:javascript
运行
复制
POSTGRES_BIN=~/Postgres/bin
B_RED='\033[1;31m'
RESET='\033[0m'

psqlcommand="$POSTGRES_BIN/psql -U vignesh usersdb -q -c"

function psqlselectrows()
{
    [ -z "$1" ] && echo -e "${B_RED}Argument 1 missing: Need table name${RESET}" ||
    $psqlcommand "SELECT * from $1"
}

上面的命令从表中选择行,并传递到参数中。

备注:

  1. 根据需要更改数据库名称。
  2. 默认情况下方案为public。要使用另一个默认模式,请在~/.psqlrc文件中添加以下行。

SET SEARCH_PATH TO <schema_name>;

  1. 如果数据库受密码保护,则返回refer this并使用安全方法。

我做了一些命令供我使用,如果它可能有帮助的话。

  1. psqlselectrows -从table
  2. psqlgettablecount中选择行-获取table
  3. psqltruncatetable的行数-截断表,在prompt
  4. psqlgettablesize上-获取table
  5. psqlgetvacuumdetails的大小-获取table
  6. psqlsettings的真空细节-获取为Postgres配置的默认和修改的设置。

(以上所有命令都需要表名作为第一个参数)

代码语言:javascript
运行
复制
#Colors
B_RED='\033[1;31m'
B_GREEN='\033[1;32m'
B_YELLOW='\033[1;33m'
RESET='\033[0m'

#Postgres Command With Params
psqlcommand="$POSTGRES_BIN/psql -U vignesh usersdb -q -c"

function psqlgettablesize()
{
    [ -z "$1" ] && echo -e "${B_RED}Argument 1 missing: Need table name${RESET}" ||
    $psqlcommand "select pg_size_pretty(pg_total_relation_size('$1')) as total_table_size, pg_size_pretty(pg_relation_size('$1')) as table_size, pg_size_pretty(pg_indexes_size('$1')) as index_size;";
}
function psqlgettablecount()
{
    [ -z "$1" ] && echo -e "${B_RED}Argument 1 missing: Need table name${RESET}" ||
    $psqlcommand "select count(*) from $1;"
}
function psqlgetvacuumdetails()
{
    [ -z "$1" ] && echo -e "${B_RED}Argument 1 missing: Need table name${RESET}" ||
    $psqlcommand "SELECT relname, n_live_tup, n_dead_tup, last_analyze::timestamp, analyze_count, last_autoanalyze::timestamp, autoanalyze_count, last_vacuum::timestamp, vacuum_count, last_autovacuum::timestamp, autovacuum_count FROM pg_stat_user_tables where relname='$1' and schemaname = current_schema();"
}
function psqltruncatetable()
{
    [ -z "$1" ] && echo -e "${B_RED}Argument 1 missing: Need table name${RESET}" ||
    {
        read -p "$(echo -e ${B_YELLOW}"Are you sure to truncate table '$1' (y/n)? "${RESET})" choice
        case "$choice" in
            y|Y ) $psqlcommand "TRUNCATE $1;";;
            n|N ) echo -e "${B_GREEN}Table '$1' not truncated${RESET}";;
            * ) echo -e "${B_RED}Invalid option${RESET}";;
        esac
    }
}
function psqlsettings()
{
    query="select * from pg_settings"
    if [ "$1" != "" ]; then
        query="$query where category like '%$1%'"
    fi
    query="$query ;"
    $psqlcommand "$query"
    if [ -z "$1" ]; then
        echo -e "${B_YELLOW}Passing Category as first argument will filter the related settings.${RESET}"
    fi
}
function psqlselectrows()
{
    [ -z "$1" ] && echo -e "${B_RED}Argument 1 missing: Need table name${RESET}" ||
    $psqlcommand "SELECT * from $1"
}
票数 -1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16226514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档