
Database
Yanbin_Q
真没什么要交待的,保持沉默
展开
-
Oracle, PostgreSQL 字符串排序不一致及调整
有一个使用了不同数据库的应,Oracle 和 PostgreSQL,数据库中的记录完全相同,相同的查询语句(相同的排序,至少从字面上来说是的)取到的记录排序却不同,从而产生了 Bug。简单演示一下默认排序各自在这两种数据库中的行为, 比如说表中有两条记录,'VFORX' 和 'ibbVA'。原创 2024-11-27 16:06:56 · 525 阅读 · 0 评论 -
JDBC 设置 PostgreSQL 查询中 any(?) 的参数
这段时间都纠缠于 Java 如何操作 PostgreSQL 数据库上,千方百计的为求得更好的性能。为此我们用上了 Batch, 或用 id = any(?) 这种更 PostgreSQL 化的数组参数操作。其实它还有更多数组方面的花样可以玩,毕竟 PostgreSQL 数据库有一种广纳百川的胸怀,总有好的新特性能在 PostgreSQL 中首先体验到。在 PreparedStatement(PgPreparedStatement) 中设置数组参数的函数是用。占位符传入数组参数的代码是。原创 2024-11-26 08:42:56 · 547 阅读 · 0 评论 -
细数 DB2 数据库的 Identity 字段
每种数据都有自己独特的自增列的声明方式,如 Oracle 的 Sequence, SQL Server 的 Identity, MySQL 的 auto_increment, PostgreSQL 的 Sequence 或 Serial。和 PostgreSQL 类似,DB2 也提供两种自增列的声明方式,它们是 Sequence 和 Identity。而本文主要着墨于 DB2 的 Identity 字段,并讲述它与 Sequence 的某种联系,以及它对数据表的导入的影响。原创 2022-10-11 00:03:15 · 778 阅读 · 0 评论 -
Python 连接和操作 DB2 和 Oracle 数据库
使用 Python 就难免要应对到不同数据库连接的问题,Python 目前也没有 Java 使用 JDBC 瘦客户端驱动那么方便。本人在用 Python 连接 SQL Server 时经常还是会有些问题,此文只着力于如何用 Python 连接 DB2 和 Oracle 数据库。从本文中我们将会学到Python 围绕着 ibm_db 来操作 DB2 以 Python DB-API 2.0 规范来操作 DB2 cx_Oracle Python 库 + Oracle Instant Client 操作原创 2022-03-03 13:02:51 · 900 阅读 · 0 评论 -
DB2 “The transaction log for the database is full“ 问题的解决
在使用 DB2 的 Community 版本的 Docker 镜像ibmcom/db2进行测试,启动 Docker容器的命令是$ docker run -name db2server --privileged=true -p 50000:50000 \ -e LICENSE=accept \ -e DB2INSTANCE=db2user \ -e DB2INST1_PASSWORD=password123 \ -e DBNAME=test \ ibmcom...原创 2022-03-03 13:02:12 · 1361 阅读 · 0 评论 -
JDBC 连接串中指定当前 schema(含 Oracle, DB2, PostgreSQL 和 SQLServer)
现在流行数据都有 Schema 的概念,一般作为数据库对象(表,函数,存储过程等)的命名空间。所以在数据库端往往存在 实例/数据库/Schema 这样层级划分。对于 DB2 和 Oracle 用客户端创建一个新的数据库并非易事,灵活的在数据库中较轻量的划分隔离空间的办法因数据库类型而异MySQL: 创建数据库(create database), create schema 是 create database的别名 PostgreSQL: create database 创建新的数据库,或在当前数据..原创 2022-03-03 12:55:08 · 7397 阅读 · 0 评论 -
Java 直接插入 CLOB/BLOB 数据到 Oracle 数据库
向数据库中插入 CLOB 或 BLOB 类型的数据,Oracle 总是比其他类型的数据库操作上要麻烦多了。当然,对于不大于 4K 长度的 CLOB 字符串在 JDBC 中可简单的用PreparedStatement.setString(idx, "short string")。如果要插入大于 4K 长度的内容,网上找来的例子许多都是分两步走先插入 EMPTY_CLOB() 或 EMPTY_BLOB() 然后 SELECT 原来的记录FOR UPDATE, 再更新先前插入的记录这就存在两个问题,...原创 2021-12-23 07:36:26 · 1610 阅读 · 0 评论 -
AWS DynamoDB 的常用操作
AWS 提供的 NoSQL 数据库有 DynamoDB, DocumentDB(即 MongoDB), 和 Keyspaces(即 Cassandra)。还有一个神秘的早已消失于 AWS 控制台之外的 SimpleDB,它只能通过 API 才能使用。因为 AWS 有意要把它藏起来,不愿被新用户看到它,希望用 DynamoDB 替代它,关于用 aws cli 如何体验 AWS SimpleDB 可见本文后面部分。DynamoDB 所设计的读写容量参数的概念,AWS 为其标榜是为保证一致性与明确的性能表现,原创 2021-10-14 12:25:34 · 439 阅读 · 0 评论 -
用 Java 把内存中的表格数据合并到 SQL Server 表中
承接近两年前的用 PreparedStatement 向 SqlServer 中一次性插入多条记录,其文后用 User-Defined Type 可用下面简单的代码把 Java 本地内存中表格数据一股脑的刷入到 SQL Server数据库表格中String sql = "INSERT INTO Customers SELECT * FROM ?";SQLServerPreparedSt...原创 2019-10-29 11:00:20 · 282 阅读 · 0 评论 -
Java 与'嵌入式' PostgreSQL 数据库的单元测试
在我们对数据库 DAO 类进行单元测试时,通常不应该依赖于一个外部数据库,所以会选用特定比较接近于真实数据库类型的内存或嵌入式数据库,如 HSQLDB(HyperSQL), H2, Derby 等。但总难免会用到特定数据库的特性,这时候就无法用前述各种数据库进行测试了。非要单元测试中覆盖到所用的数据库特性的话可以选择用 docker,如Testcontainers, 经过模块扩展,它可以由 do...原创 2019-10-24 05:04:46 · 1279 阅读 · 0 评论 -
PostgreSQL 批量插入, 更新和合并操作
就在 2019 年 1 月份微软收购了 PostgreSQL 数据库的初创公司 CitusData, 在云数据库方面可以增强与 AWS 的竟争。AWS 的 RDS 两大开源数据库就是 MySQL(Aurora 和 MariaDB 是它的变种) 和 PostgreSQL。而 PostgreSQL 跳出了普通关系型数据库的类型约束,它灵活的支持 JSON, JSONB, XML, 数组等类型。比如...原创 2019-01-29 15:41:08 · 6957 阅读 · 0 评论 -
使用 PostgreSQL 的 uuid 字段类型
上一篇 使用 SQL Server 的 uniqueidentifier 字段类型 了解了 SQL Server 中如何使用 uniqueidentifier 字段类型后,现在来看下 PostgreSQL 中如何使用 uuid 字段类型。在 PostgreSQL 的字段类型是 uuid 了,所以创建一个带有 uuid 字段的表是CREATE TABLE customers ( id uuid...原创 2018-05-21 14:22:51 · 6415 阅读 · 0 评论 -
使用 SQL Server 的 uniqueidentifier 字段类型
SQL Server 自 2008 版起引入了 uniqueidentifier 字段,它存储的是一个 UUID, 或者叫 GUID,内部存储为 16 个字节。SQL Server 可用两个函数来生成 uniqueidentifier, 分别是 NEWID() 和 NEWSEQUENTIALID(), 后者只能用作字段的默认值。Java 也有一个 UUID 工具类 java.uti.UUID, U...原创 2018-05-21 14:22:21 · 9417 阅读 · 0 评论 -
用 PreparedStatement 向 SqlServer 中一次性插入多条记录
标准 SQL 都提供了下面这种方式一条 INSERT INTO 语句插入多条记录INSERT INTO Customers(Id, Name, Age) VALUES (1, 'Name1', 21.5), (2, 'Name2', 32.3)VALUES 之后用括号列出每一条记录。但是在 Java 中想把上面的语句转换成 PreparedStatement 来插原创 2017-12-12 16:23:01 · 2595 阅读 · 0 评论 -
SQL Server 和 HSQLDB 中使用 merge into 完成 saveOrUpdate 操作
当我们调用 Hibernate 的 saveOrUpdate() 或 JPA 的 save() 方法的 Hibernate 实现时,都会做两步操作:1)按 ID 查询记录是否已存在,2)不存在插入新记录,存在则更新原记录。这种两步操作其实可以在 SQL Server 和 HSQLDB 中一条语句完成,这就是本文要介绍的 merge into 语句。感觉到用数据库自己的特性,并且一条语句会比原创 2017-02-09 14:14:41 · 1118 阅读 · 0 评论 -
Oracle 中重新编译无效的存储过程, 或函数、触发器等对象
Oracle 中的存储过程在有些情况下会变成失效状态,在 PL/SQL Developer 中该存储过程的图标左上角显示一把小红叉叉。比如储过程所引用的对象失效,dblink 出问题啦都可能引起用到它的存储过程失效。再就我的存储过程经常会变成无效,至今原因都未查明。查询 dba_dependencies 视图可以看到存储过程所引用的对象,再就在 dba_objects 视图中可以看到对象的 cre原创 2009-01-14 09:12:00 · 4568 阅读 · 0 评论