`

oracle中两张表数据比较

阅读更多
数据库:oracle
在某些情况下,我们会需要比较两张表的数据是否一样。
假设有两张表A与表B他的字段相同,但是当中的数据可能不同,而且有些字段的数据还有可能为空
方法一(手动):把需要比较的两张表的数据按照某种规则排序后导出为xls,这里我直接用PL/SQL Developer导出
    然后用把xls文件转换成txt文件,这里我用的是batconv转换公式
    现在我们就有了两个txt文件。
    然后用beyond compare文件比较器比较内容。
    优点:数据差异一目了然,缺点:比较费时。
方法二(通过Sql语句来比较)
    创建表的语句:
    create table formula(
        id varchar2(50) primary key--自动生成的,唯一的。
        formulaName varchar2(50),
        formulaContent varchar2(2000),
        formulaType varchar2(20),
    )
    当中除id不为空,其它三项均可能为空。
    一般情况下我们可以用
    select * from formula A where not exists (select * from formula B where A.formulaName=
    B.formulaName and A.formulaContent=B.formulaContent and A.formulaType=B.formulaType)
    在oracle 情况下如果两张表的某个字段都为null则其通过A.*=B.*是比较不出来的。
    因此要额外加上这样的判断or(A.formulaContent is null and B.formulaContent is null) or
    (A.fomrulaName is null and B.fomrulaName is null) or (A.formulaType is null and B.fomrulaType is null)
   
    通过上面这个sql语句我们就可以找在A表中存在,但在B表中不存在的数据
   
    反过来可以查询在B表中存在,但在A表中不存在的数据。
   
    若两个查询都为空,则说明两张表的相应字段完全相同。
    若这两张表在不同的数据库,则要通过建立DBLink,可以参见我的转贴
    优点:数据比较快,特别是在数据量比较大的数据优势更加明显,
    缺点:比较时不能很快看出两张表的差异。因为查询的只是当中的某一张表。
不足之处还请大家指出
分享到:
评论

相关推荐

    Oracle中比对2张表之间数据是否一致的几种方法

    ### Oracle中比对两张表之间数据是否一致的几种方法 #### 概述 在Oracle数据库管理中,确保数据的一致性和准确性是非常重要的任务之一。在实际应用中,可能需要经常对比两个表之间的数据是否一致,这有助于发现并...

    Oracle两张表关联批量更新其中一张表的数据

    方法一(推荐): UPDATE 表2 ...尤其注意最后的外层where条件尤为重要,是锁定其批量更新数据的范围。 方法二: MERGE INTO 表2 USING 表1 ON (表2.A = 表1.A) -- 条件是 A 相同 WHEN MATCHED THEN UP

    Oracle_数据库中的海量数据处理

    ### Oracle数据库中的海量数据处理 #### 数据仓库系统的特点与Oracle数据仓库简介 数据仓库系统是一种专门设计用于存储、管理和分析企业历史数据的信息管理系统。它的特点包括面向主题、集成性、随时间变化以及非...

    Oracle中只更新两张表对应数据的方法 - AJava

    在Oracle数据库中,当需要更新两张表之间关联的数据时,我们通常会涉及到多表操作,这在数据库管理和数据维护中是常见的需求。本篇将详细解释如何在Oracle中高效且准确地只更新两张表对应数据的方法。 首先,我们...

    Oracle数据库中大型表查询优化的研究

    在Oracle数据库中,大型表查询优化是一个至关重要的主题,尤其对于处理海量数据的企业级应用而言。Oracle数据库以其高效、稳定和强大的功能著称,但在处理大规模数据时,如果不进行适当的优化,查询性能可能会显著...

    Oracle中多表关联批量插入批量更新与批量删除操作

    在Oracle中,如果两个或多个表之间存在关联,比如`emp`表和`dept`表通过`deptno`字段关联,批量插入数据时需要确保关联关系的一致性。例如,插入`emp`表时,`deptno`字段应引用已存在于`dept`表中的`deptno`。可以先...

    Oracle 多表查询优化

    在 Oracle 中,多表查询是指从多个表中检索数据的操作。这种操作可能会占用大量的系统资源和时间,影响数据库的性能。 Oracle 多表连接效率 在 Oracle 中,多表连接的效率取决于连接的方式和顺序。 Oracle 使用的...

    如何将Access表中的数据导入到ORACLE中

    将 Access 表中的数据导入到 ORACLE 中 在本文中,我们将讨论如何将 Access 表中的数据导入到 ORACLE 中的两种方法。这些方法将指导您如何使用 ODBC 连接将数据从 Access 导入到 ORACLE 中。 方法一:使用 ODBC ...

    数据库替换源代码,可根据一张表中对应的两组数据替换另一张表中的数据

    4. **数据比较**:比较两个数据集的关键字段,如电话号码,以确定在表B中需要更新的记录。 5. **数据更新**:一旦找到匹配项,就可以使用UPDATE语句在表B中替换相应的数据。可能需要使用 transactions 来确保数据...

    oracle数据库数据表替换方法

    oracle数据库中数据库替换方法,即删除原数据库资源,导入新的数据库资源。

    为什么oracle有时不用索引来查找数据

    在两张表连接时,只有嵌套循环连接能够在内表的目标列上有效利用索引。排序合并连接即使相关列上有索引,也只能避免数据排序过程;哈希连接由于需要进行哈希运算,索引的存在几乎不会影响查询速度。 4. **连接顺序*...

    如何在oracle中查询所有用户表的表名、主键名称、索引、外键等

    根据提供的标题、描述以及部分代码内容,我们可以了解到这篇文章主要探讨的是如何在Oracle数据库中查询所有用户表的相关信息,包括表名、主键名称、索引、外键等元数据信息。接下来,我们将对这些知识点进行详细的...

    利用kettle自动创建oracle表分区

    Oracle表分区是一种非常重要的数据库优化技术,它可以将大型表分割成多个小的独立表,从而提高查询效率和数据管理效率。在本篇文章中,我们将使用Kettle来自动创建Oracle表分区。 Oracle表分区是指将一个大型表分割...

    oracle数据导入导出

    - 解释:此命令用于导出 TESTDB2 数据库中 inner_notify 和 notify_staff_relat 这两张表的数据。 **4. 条件导出** - 命令示例:`exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query="where ...

    Oracle sql语句多表关联查询

    内连接是指两张表中只有满足连接条件的才显示,不满足一定不显示。左外连接是指左表中的所有记录都显示,右表中的记录只显示满足连接条件的。 Oracle SQL 语句多表关联查询是数据库管理系统中的一种常见查询方式,...

    27.Oracle union多表查询1

    在Oracle数据库中,`UNION` 和 `UNION ALL` 是两种用于合并多个查询结果集的方法,主要应用于多表查询。这两个操作符在处理数据时有着显著的区别。 1. **UNION 操作符** `UNION` 用于合并两个或多个`SELECT`语句的...

    Oracle的三种表连接方式

    这种方式将需要连接的两张表中的列都放到内存中,然后进行排序,而排序是一个消耗资源的操作,这样对于两张比较大的表,性能恐怕会比较差。所以, 这种策略适合于表比较小, 或者在连接列上有索引的表。 Nested ...

    ORACLE_多表关联_UPDATE_语句

    Oracle数据库中的多表关联UPDATE语句是用于在一个表中更新数据时,依据另一个表的条件进行操作的关键技术。这在处理复杂的数据同步或修正场景时非常有用。在本例中,我们将探讨如何利用多表关联来更新数据,并通过...

Global site tag (gtag.js) - Google Analytics