在一个数据库下,是看不到另一个库里面的表的,虽然是一个schema下的表。如果不想切换数据分别查询的话,可以用下面的语句进行查询。

#!/bin/bash

# 获取所有数据库列表
DATABASES=$(psql -U postgres -c "SELECT datname FROM pg_database WHERE datname NOT LIKE 'template%'" -t)

# 遍历每个数据库
for db in $DATABASES; do
    echo "正在处理数据库: $db"
    
    # 查询该数据库中的所有表
    TABLES=$(psql -U postgres -d "$db" -c "SELECT relname FROM pg_class WHERE relkind='r' AND relname NOT LIKE 'pg_%' AND relname NOT LIKE 'sql_%'" -t)
    
    # 输出表名
    echo "数据库 $db 中的表:"
    for table in $TABLES; do
        echo "  - $table"
    done
    echo ""
done

更多推荐