【PostgreSQL】连接pg数据库Schema切换

这篇具有很好参考价值的文章主要介绍了【PostgreSQL】连接pg数据库Schema切换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题情况

由于PostgreSQL数据库模式(schema)存在多个,原先的表单是默认采用public但是查询表和字段时候有查询所有未进行过滤,导致数据库连接失败、查表字段也为空(空即查询服务端异常错误)
【PostgreSQL】连接pg数据库Schema切换

解决方式

  • 数据库连接配置

添加参数补充?currentSchema=dwd
譬如:username=root;password=XXXX;url=jdbc:postgresql://11.XX.XX.145:5432/test_data?currentSchema=dwd


代码优化

代码调整

首先获取url:

jdbc:postgresql://localhost:5432/test_data?currentSchema=dwd     ==> 解析【currentSchema=dwd】
jdbc:postgresql://localhost:5432/test_data?currentSchema=public  ==> 解析【currentSchema=public】
jdbc:postgresql://localhost:5432/test_data                       ==> 解析【currentSchema=null】默认表使用【current_schema()】表字段查询使用【public】

然后根据解析,参数传递查询文章来源地址https://www.toymoban.com/news/detail-505231.html

	 /**
	 * 解析 jdbc的url内的默认参数
	 * <p>
	 * 譬如:username=root;password=XXXX;url=jdbc:postgresql://11.XX.XX.145:5432/test_data?currentSchema=dwd
	 * 获取 currentSchema=dwd
	 *
	 * @param url
	 * @return
	 */
	public static Map<String, Object> analysisDefParam(String url) {
		Map<String, Object> value = new HashMap<>();
		try {
			String[] params = url.split("\\?");

			List<String> param = new ArrayList<>();
			if (params.length > 1) {
				param = Arrays.asList(params[1].split("&"));
			}
			param.forEach(p -> {
				String[] item = p.split("=");
				if (item.length > 1) {
					value.put(item[0], item[1]);
				}
			});
		} catch (Exception e) {
			log.error("出现异常 {} {}", e);
		}
		return value;
	}
  • 其他
## 版本查看
select version();

datasource 如何指定postgresql 连接的schema
##9.4开始通过关键字currentSchema指定
jdbc:postgresql://localhost:5432/mypgsql?currentSchema=myschema

##旧版本通过searchpath指定 (代码暂未兼容)
jdbc:postgresql://localhost:5432/mypgsql?searchpath=myschema

到了这里,关于【PostgreSQL】连接pg数据库Schema切换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PostgreSQL连接指定数据库

    要连接到PostgreSQL中的指定数据库,您需要使用以下格式的连接字符串: 其中,username是连接PostgreSQL的用户名,password是该用户的密码,hostname是PostgreSQL服务器的主机名或IP地址,port是PostgreSQL服务器的端口号,database_name是要连接的数据库名称。 例如,如果您要连接到名为my

    2024年02月11日
    浏览(37)
  • openGauss数据库pg_xlog爆满问题解决

    最近有一个之前搭的环境登不上了,好久没用想拿来测试的时候发现启动不了。启动时报错: [Errno 28] No space left on device query也不行了,提示没有空间了。 查询磁盘使用情况 df -h ,果然100% 这个环境当时安装的是主备,看了下备库的服务器,发现不知道啥时候已经被删库了,

    2024年02月02日
    浏览(42)
  • Python 连接 PostgreSQL 数据库

    Psycopg 是最受欢迎的用于连接 PostgreSQL 的 Python 驱动库, Psycopg 完全遵守 Python DB API 2.0 规范, 并且是线程安全的, 在底层直接调用 C 库 libpq 安装 psycopg2-binary 是预编译的包, 自带 libpq 和 libssl 库 psycopg2 的命名来源于 http://psyco.sourceforge.net/, 末尾的 pg 表示 PostgreSQL 简单示例 使用

    2024年02月06日
    浏览(37)
  • python连接postgresql数据库

    postgresql是常用的关系型数据库,并且postgresql目前还保持着全部开源的状态,所以我们今天就一起来学习一下,如何用python连接postgresql。 官方文档地址: https://www.psycopg.org/docs/cursor.html 若是增、删、更等操作,则操作流程为: connect 连接 获取游标对象 cursor 执行sql得到结果

    2024年02月16日
    浏览(30)
  • PostgreSQL 数据库实现公网远程连接

    PostgreSQL是一个功能非常强大的关系型数据库管理系统(RDBMS),下面简单几步通过cpolar 内网穿透工具即可现实本地postgreSQL 远程访问! 1. 安装postgreSQL 进入官网下载界面,我们下载自己需求的版本,这里选择windows 为例:https://www.postgresql.org/download/ 下载后运行安装文件,进行一步步安

    2024年02月08日
    浏览(36)
  • Navicat 连接远程数据库 Postgresql、MySQL

    不管什么数据库,只要用Navicat连接远程,下面的方法均奏效。 环境: 服务器:远程服务器 操作系统: : linux 数据库:PostgreSQL14 数据库客户端:Navicat 主要分为两步: 第一步:点击Navicat左上角的“连接”,选择Postgresql。先连接SSH服务器。  勾选“使用SSH通道”,在下面输

    2024年02月05日
    浏览(47)
  • DBeaver数据库管理工具安装连接PostgreSQL和DM

    1. 安装 下载地址 https://dbeaver.io/download/ 2. 连接PostgreSQL 配置显示所有数据库 第二个勾选会显示模板数据库 点击 测试连接 ,然后下载驱动 连接成功 3. 连接DM8 3.1 下载驱动 地址 https://eco.dameng.com/document/dm/zh-cn/app-dev/java_Mybatis_frame.html 下载完成解压,将需要的 DmJdbcDriver18.jar 放到

    2024年02月16日
    浏览(38)
  • 如何使用IDEA连接PostgreSQL数据库:从新手到高手的全面指南

    博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接 : 🔗 精选专栏 : 《面试题大全》 — 面试准备的宝典! 《IDEA开发秘籍》 — 提升你的IDEA技能! 《100天精通鸿蒙》 — 从Web/安卓到鸿蒙大师! 《100天精通Golang(基础入门篇)》 — 踏入

    2024年04月15日
    浏览(130)
  • postgresql导入导出数据库的一些问题

    就创建一个空库,啥也不用管,也不用添加 postgis 之类的扩展 如果是不同节点之间迁移,建议先创建之前的用户,如果没有之前的用户导入时会导致表所有者是postgres

    2024年02月17日
    浏览(33)
  • SpringBoot整合Druid数据库连接池&多数据源&注解切换&动态添加

    配置好之后 Druid 会通过 DruidDataSourceAutoConfigure 自动装配 属性配置 数据源枚举 动态数据源 继承 AbstractRoutingDataSource 就可以实现动态数据源了 实现了一个动态数据源类的构造方法,主要是为了设置默认数据源,以及以Map保存的各种目标数据源。其中Map的key是设置的数据源名称

    2024年03月22日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包