数据库国产化之路(一)

数据库国产化之路(一)

1、前言:适配海量数据库过程中的一些记录,备忘用

2、海量数据库基于的pg版本,查看PG_VERSION文件为9.2。

3、MySQL中的IF函数替代,一开始的方案是从网上找了个if函数,后来发现CASE WHEN其实能完成三元运算。

-- MySQL的IF函数,完成三元运算
SELECT 
	IF((field_rename IS NOT NULL AND field_rename <> ''), field_rename, field_name) AS "fieldName"
FROM archive_field_control 	

-- 海量数据库/PostgreSQL
SELECT 
	CASE WHEN (field_rename IS NOT NULL AND field_rename <> '') THEN field_rename ELSE field_name END AS "fieldName"
FROM archive_field_control 

-- 仔细看下面转换时的区别,在MySQL中存在很多隐士类型转换,比如IF中第一个参数,只要大于0,就是true,而在PG中不能这样写,必须严格写好数据类型,与0进行比较返回bool值
-- MySQL的IF函数,完成三元运算
SELECT
	IF((SELECT COUNT(*) FROM archive_field_control afc WHERE afc.field_id = af.id),1,0) AS "field_use"
FROM archive_field af

-- 海量数据库/PostgreSQL
SELECT
	CASE WHEN ((SELECT COUNT(*) FROM archive_field_control afc WHERE afc.field_id = af.ID )>0) THEN 1 ELSE 0 END AS "field_use"
FROM archive_field af

4、海量数据库中,给字段设置为空字符,在数据库中存的是null(不知道是否进行了个性化设置,原因未知)
验证了MySQL、翰高、pg数据库,不会出现这种情况。下面是测试记录。

在这里插入图片描述

5、海量数据库不支持 RESTART IDENTITY

# 清空表不能使用RESTART IDENTITY重置序列,这个特性从pg10开始有
TRUNCATE archive_field_control RESTART IDENTITY;

-- 设置序列的值;有数据时,最大id+1,没有数据时从1开始,通过调整is_called true或false,true时从下一个值开始,false时从当前值开始
SELECT setval('archive_field_control_id_seq', (select COALESCE(max(id),1) from archive_field_control), (SELECT (SELECT CASE WHEN (SELECT(SELECT max(id) from archive_field_control) IS NULL) THEN FALSE ELSE TRUE END)));

6、在海量数据库中其他注意事项

-- 这里面的condtion field_rename IS NOT NULL AND field_rename <> '' 或者 field_rename IS NOT NULL AND field_rename != '',不能返回预期结果(不管是本身未设置值还是设置了空字符'',条件竟然会返回true,有点凌乱)
CASE WHEN (field_rename IS NOT NULL AND field_rename <> '') THEN field_rename ELSE field_name END AS "fieldName"

-- 把后面的空字符判断去掉可以返回预期结果(前面验证过他空值也会存为null,这里直接判断null,歪打正着么)
CASE WHEN (field_rename IS NOT NULL) THEN field_rename ELSE field_name END AS "fieldName"

小尾巴~~
只要有积累,就会有进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/774312.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你生成一幅好看的AI图片

很多人看到别人用SD生成出来的图片感到非常的羡慕&#xff0c;因为即使给了他们最好的SD软件&#xff0c;他们也是词穷&#xff0c;不知道该如何去描述要生成的图片。 别急&#xff0c;这篇文章会一步步的教会你怎么才能生成一个好看的AI图片。 跟着我&#xff0c;别走丢。 …

iptables与firewalld

iptables Linux上常用的防火墙软件 1、 防火墙的策略 防火墙策略一般分为两种&#xff0c;一种叫通策略&#xff0c;一种叫堵策略&#xff0c;通策略&#xff0c;默认门是关着的&#xff0c;必须要定义谁能进。堵策略则是&#xff0c;大门是洞开的&#xff0c;但是你必须有身…

从数据到智能,英智私有大模型助力企业实现数智化发展

在数字化时代&#xff0c;数据已经成为企业最重要的资源。如何将这些数据转化为实际的业务价值&#xff0c;是每个企业面临的重要课题。英智利用业界领先的清洗、训练和微调技术&#xff0c;对企业数据进行深度挖掘和分析&#xff0c;定制符合企业业务场景的私有大模型&#xf…

2024年7月最佳免费天气API接口推荐

在我们的日常生活中&#xff0c;天气扮演着一个至关重要的角色&#xff0c;它影响着我们的情绪、健康、日常安排和商业决策。无论是计划一次户外活动、安排农作物种植&#xff0c;还是确保旅行安全&#xff0c;天气信息的准确性和及时性至关重要。随着技术的进步&#xff0c;天…

格式化代码 | 美化JSON、SQL

一、格式化JSON数据 打开Postman&#xff0c;将json数据粘到里面&#xff0c;点击Beautify即可美化代码。 二、格式化SQL 打开Navicat&#xff0c;新建查询&#xff0c;将sql粘进去点击”美化sql“即可。 三、浏览器 在线格式化 使用浏览器上的在线格式化网址。例如&…

android应用的持续构建CI(五)-- 应用管理

一、ER设计 渠道&#xff1a;应用发布的渠道&#xff0c;To B的话&#xff0c;可能是学校、租户等&#xff1b;To C的话&#xff0c;渠道则是不同厂商的应用市场。审核&#xff1a;jenkins构建应用完成后&#xff0c;管理后台生成应用的审核记录。 下面是每个实体详细的字段&a…

聚合支付系统主要分账方案及API分析

1 常见分账场景介绍 分账一般分为线下场景分账和线上场景分账&#xff0c;分账API分为微信&#xff0c;支付宝或其他第三方支付公司、银行。今天我们主要探讨微信、支付宝线上和线下场景分账流程。 微信分账API分为收付通和线下服务商分账&#xff0c;支付宝分账分为互联网平…

AVL许可证状态查询

Adams软件介绍 ADAMS是MSC公司 (现属于海克斯康) 旗下的一款专业的机械系统动力学自动分析软件&#xff0c;可以帮助工程师和设计师快速分析和优化机械系统的运动和力学性能。ADAMS支持多种机械系统的建模和仿真&#xff0c;如汽车、机器人、飞机、机械臂等等&#xff0c;可以模…

Butterfly主题文章标题改成转动小风车

效果 标题级别不同小风车颜色不同&#xff0c;鼠标移入会有转动变慢及变色效果。 新建css 建议在/source下创建诸如img/css/js等文件夹&#xff0c;存放文章或网站用的素材&#xff0c;分门别类后续也方便维护。 Hexo打包的时候&#xff0c;会自动把/source下的文件&#…

直饮水也要烧开饮用吗?

某天上班&#xff0c;同事跟我说他的爸爸喝瓶装水都要烧开了后再喝。 这种行为震惊了小编。 好像很多上一辈的人有种执念&#xff0c;那就是水一定要烧开了喝。 不仅是因为习惯&#xff0c;也是他们的观念已经根深蒂固&#xff0c;认为烧开后的水喝起来才健康。 其实水不一…

MUNIK解读ISO26262--什么是DFA

我们在学习功能安全过程中&#xff0c;经常会听到很多安全分析方法&#xff0c;有我们熟知的FMEA(Failure Modes Effects Analysis)和FTA(Fault Tree Analysis)还有功能安全产品设计中几乎绕不开的FMEDA(Failure Modes Effects and Diagnostic Analysis)&#xff0c;相比于它们…

通过代理服务器连接 huggingface下载数据集或模型

有些huggingface的数据集或者模型在镜像网站("https://hf-mirror.com"&#xff09;上不存在&#xff0c;因此在国内只能通过代理服务器来下载&#xff0c;下面是下载的代码示例&#xff1a; import os os.environ["http_proxy"] "http://127.0.0.1:…

Pyqt5中的按钮在播放后出现大小变化应该怎么做

有的时候开发的Pyqt5程序总是会在预览后发现按钮的大小和设计的不一样大&#xff0c;主要原因就是因为按钮的“水平策略”和“垂直策略”的设置导致的&#xff0c;具体如下&#xff1a; 设置为fixed&#xff0c;就是固定的&#xff0c;不要设置为其他的。 fixed的功能如下 部…

论文学习——动态多目标优化的一种新的分位数引导的对偶预测策略

论文题目&#xff1a;A novel quantile-guided dual prediction strategies for dynamic multi-objective optimization 动态多目标优化的一种新的分位数引导的对偶预测策略&#xff08;Hao Sun a,b, Anran Cao a,b, Ziyu Hu a,b, Xiaxia Li a,b, Zhiwei Zhao c&#xff09;In…

推荐系统三十六式学习笔记:原理篇.MAB问题18|如何将Bandit算法与协同过滤组合使用

目录 信息茧房COFIBA1.思想2.细节 再谈EE问题总结 荐系统中最经典的算法是协同过滤&#xff0c;其背后的思想简单深刻&#xff0c;在万物互联的今天&#xff0c;协同过滤的威力更加强大。与其说协同过滤是一门技术&#xff0c;不如说是一种方法论&#xff0c;协同过滤生动的诠释…

rs轨迹校验

最近发现有些网站的rs似乎上了轨迹校验&#xff0c;附图&#xff1a; 写了个解rscookie的插件&#xff0c;可以精准看到rs更改了那些校验点&#xff0c;需要做什么处理&#xff0c;就很舒服 有需要轨迹代码或者瑞数相关的可以联系 let v huaqu0727

【漏洞复现】锐捷校园网自助服务系统——任意文件读取

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 锐捷校园网自助服务系统是一个供校园内学生和教职工自助管理网络…

6.8应用进程跨网络通信

《计算机网络》第7版&#xff0c;谢希仁 理解socket通信

科普文:一文搞懂jvm实战(二)Cleaner回收jvm资源

概叙 在JDK9中新增了Cleaner类&#xff0c;该类的作用是用于替代finalize方法&#xff0c;更有效地释放资源并避免内存泄漏。 在JEP260提案中&#xff0c;封装了大部分Sun包内部的API之余&#xff0c;还引入了一些新的API&#xff0c;其中就包含着Cleaner这个工具类。Cleaner承…

INTERCONNECT 添加自定义器件到 Custom 文件夹下

INTERCONNECT 添加自定义器件到 Custom 文件夹下 正文方法1方法2正文 作者本人一直坚信一件事情,Lumerical 中的所有结构都可以通过运行对应的脚本文件得到。运行脚本文件获取结构可以使得结构本身具有可迁移性和重复使用性,长远来看,一定比手动创建更方便。因此,这里我们…