【发布时间】:2017-09-30 02:53:55
【问题描述】:
这涉及比较两个不同数据库架构中的表。要求是遍历一组已知的表,并确保两个schema中的表数据相同。目前我们正在 Oracle 上进行类似的操作,查询如下:
对于每个表;
SELECT COUNT(*) FROM (SELECT * FROM SCHEMA1.MY_TABLE MINUS (SELECT * FROM SCHEMA2.MY_TABLE));
但是上面的查询在涉及到大对象时在 oracle 中有一个限制:
ERROR at line 1: ORA-00932: inconsistent datatypes: expected - got BLOB
显然,当涉及到detailed here 这样的大对象时,Oracle 中的所有集合操作都存在限制。可以通过使用 DB 特定函数(如 dbms_lob.compare)来克服它。
由于我对 Postgres 和 SQLite 的了解有限,我想知道;
- 在涉及 LOB 值时,在 Postgres 和 SQLite 中使用联合、减号或相交等集合运算符是否有类似的限制?
- 如果有限制,是否有任何特定于数据库的函数可用于 LOB 比较?
【问题讨论】:
-
Postgres 中的等效数据类型是
text或无限的varchar,它可以在那里正常工作。
标签: database postgresql sqlite blob clob