search_path 的使用说明

文章目录

文档用途

search_path 模式搜索路径,是数据库使用的一个进行表查看的模式列表,本文章用于介绍如何使用模式搜索路径参数 search_path 。

详细信息

在 HGDB 中,想要查看数据库中有什么数据表或者视图,一般会在连接数据库后使用元命令\d进行查询,而元命令\d的搜索范围会限定在这个 search_path 模式搜索路径参数中。

search_path 参数默认是 "$user", public 两个值。

sql 复制代码
highgo=# show search_path; 
   search_path   

-----------------

 "$user", public

(1 row)

$user 是指和当前用户的用户名相同的模式,public 就是数据库自带的 public 模式

在数据库中创建测试模式和数据表进行测试:

sql 复制代码
highgo=# create schema test_schema ;

CREATE SCHEMA

highgo=# create table test_table_public (id int );

CREATE TABLE

highgo=# create table test_schema.test_table_test_schema (id int );

CREATE TABLE

在默认的 search_path 参数下使用元命令 \d 查询表是不能把刚建立的表完全查询出来

sql 复制代码
highgo=# \d

                 List of relations

 Schema |           Name           | Type  | Owner  

--------+--------------------------+-------+--------

 public | pg_stat_statements       | view  | highgo

 public | pg_wait_sampling_current | view  | highgo

 public | pg_wait_sampling_history | view  | highgo

 public | pg_wait_sampling_profile | view  | highgo

 public | test_table_public        | table | highgo

(19 rows)

无法查询出来表 test_table_test_schema ,原因是数据库搜索是按照模式搜索路径中所列出来的模式进行搜索

将模式搜索路径参数进行暂时性修改:

sql 复制代码
highgo=# set search_path TO public,test_schema;

SET

或者

sql 复制代码
highgo=# set search_path = public,test_schema;

SET



highgo=# show search_path ;

     search_path     

---------------------

 public, test_schema

(1 row)

再次进行查询:

sql 复制代码
highgo=# \d

                    List of relations

   Schema    |           Name           | Type  | Owner  

-------------+--------------------------+-------+--------

public      | pg_wait_sampling_current | view  | highgo

 public      | pg_wait_sampling_history | view  | highgo

 public      | pg_wait_sampling_profile | view  | highgo

public      | test_table_public        | table | highgo

 test_schema | test_table_test_schema   | table | highgo

但是上述修改方式是暂时性修改,只会在本次会话生效,如果断开了数据库连接,再次使用 psql 连接进去数据库,search_path 参数又会变回默认值

search_path 参数是存在于 postgresql.conf 配置文件中的,如果想要永久生效则可以直接修改 postgresql.conf 配置文件:

sql 复制代码
[highgo@localhost ~]$ vi $PGDATA/postgresql.conf



#search_path = '"$user", public'        # schema names

去掉注释符号,将 search_path 参数的值修改为需要的值即可,不需要重启数据库生效

sql 复制代码
[highgo@localhost ~]$ pg_ctl reload


server signaled



highgo=# show search_path ;

         search_path         

-----------------------------

 "$user", public,test_schema

(1 row)
相关推荐
2501_9336707910 小时前
2026秋招数据分析岗备考路线:SQL、BI、项目与面试题拆解
数据库
我要见SA姐113 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
xcLeigh14 小时前
聊聊国产化替换:好用数据迁移工具KDMS怎么帮咱们搞定评估难
数据库·sql·数据迁移·kes·kdms
Elastic 中国社区官方博客14 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
我要见SA姐115 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
数据库·ide·vscode·oracle·编辑器
Nturmoils16 小时前
一份 KDMS 评估报告,怎样排出迁移先后顺序
数据库
这个DBA有点耶16 小时前
异构数据集成怎么做?5 种同步方案对比 + 金融级 CDC 实战解析
数据库·oracle·架构
独泪了无痕16 小时前
SQL函数实战:GREATEST与LEAST的技巧
数据库·sql·mysql
码少女16 小时前
Linux--多路转接之select
java·服务器·数据库
梁辰兴17 小时前
软件工程:软件维护的副作用
数据库·软件工程·梁辰兴·控制方法·软件维护的副作用·副作用类型·副作用原因