项目产品化升级数据库脚本问题——如何查询两个数据库差异的库表或者数据

项目产品化能够解决svn版本问题,防止一个现场发现问题需要修改多套程序的问题。但是同时带来新的问题,在项目需求变化的时候或者升级一个产品的时候,对应的数据库脚本就成为关键,这里介绍一个解决方法——数据链对比法。 通过建立数据链对比缺少的库表以及各种配置数据。当然,如果在开发的时候就合理的管理的数据库脚本就不会存在这样的问题

步骤:

1、建立数据链,打开pl/sql,右键点击database_links——新建,填写信息即可,对应的sql语句为,这里我建一个名字叫TEST的数据链

-- Drop existing database link
drop database link TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM;
-- Create database link
create database link TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
  connect to **** identified by ****
  using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = ***.**.**.**)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = **)))';

2、使用数据链作对比,这里介绍一下wm_concat()这个函数,这个函数可以将行值变成一列

select wm_concat(a.table_name)
  from user_tables a
 where a.table_name not in (select table_name from [email protected])

这样就可以得到现场库与开发库之间数据库库表的差异,导出不存在的库表。

如果有数据库配置表,也可以用同样的方法查出现在数据库中缺少的配置数据

时间: 2024-08-06 10:18:27

项目产品化升级数据库脚本问题——如何查询两个数据库差异的库表或者数据的相关文章

mysql数据库和mongodb数据库的相关操作以及两个数据库的区别

在docs命令中执行数据操作 MySQL数据库 先启动MySQL服务器  net start mysql 进入MySQL服务器MySQL -uroot -p(这里写你的数据库密码) (-P是从哪个端口进) 我第一次操作是就是因为电脑上 有 MySQL  MySQL57 MySQLla 三个服务 引起端口冲突 导致 我 找不到相应的数据 数据库操作 create database   创建数据库 show databases   显示MySQL服务上的数据库 use  数据库          使

第二阶段 MySQL函数库 表中数据查询与多表操作

一位初学php的随堂笔记,记录自己的成长! 一.表结构的修改(DDL) 1.添加表结构的字段 a.ALTER TABLE 表名 ADD 字段名 数据类型 [字段属性|约束条件] [FIRST|AFTER 字段名]: b. 添加多个字段 ALTER TABLE 表名 ADD 字段名 数据类型 [字段属性|约束条件] [FIRST|AFTER 字段名], ADD 字段名 数据类型 [字段属性|约束条件] [FIRST|AFTER 字段名]...: 2 删除字段 ALTER TABLE 表名 DROP

《懒人Shell脚本》之八——定期备份Mysql数据库表的实现

0.背景 实际开发环境中,前端程序需要在给定时间段内,将数据更新/插入到mysql指定的库表中.随着数据量的增多,基础库表基数的增长,每更新一次都会有5s左右的卡顿. 改进方案一:批量更新,累计数10条或者100条进行一次更新入库操作: 改进方案二:将当前日期前1个月之前的数据进行备份操作,并删除当前库表中1个月前的数据.经测定,该方法一定程度提高了访问效率.根因:基础表基数少,查询效率相对提高. 1.库表的定时备份总结 步骤1:备份Mysql指定数据库中的制定库表. 使用 mysqldump,

处理上百万条的数据库如何提高处理查询速度

处理上百万条的数据库如何提高处理查询速度.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引.2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!=

大文件数据库脚本导入解决方案

当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库, 但是当数据库导出脚本很大,用Microsoft SQL Server Management Studio执行脚本时,往往会遇到“内存不足”的提示. 解决办法: 用微软自带的sqlcmd工具,可以导入执行.以SQL Server 2008R版本为例: 第一步:Win+R 键入:cmd 命令,开启命令行工具: 第二步:键入:cd C:\Program Files\Microsoft SQL Server\100\Tool

php 处理上百万条的数据库如何提高处理查询速度

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放

两大数据库缓存系统实现对比

和redis,作为近些年最常用的缓存服务器,相信大家对它们再熟悉不过了.前两年还在学校时,我曾经读过它们的主要源码,如今写篇笔记从个人角度简单对比一下它们的实现方式,权当做复习,有理解错误之处,欢迎指正. 两大数据库缓存系统实现对比两大数据库缓存系统实现对比一. 综述读一个软件的源码,首先要弄懂软件是用作干什么的,那memcached和redis是干啥的?众所周知,数据一般会放在数据库中,但是查询数据会相对比较慢,特别是用户很多时,频繁的查询,需要耗费大量的时间.怎么办呢?数据放在哪里查询快?那

Oracle中把一张表查询结果插入到另一张表中

一.Oracle数据库中,把一张表的查询结果直接生成并导入一张新表中.  例如:现有只有A表,查询A表,并且把结果导入B表中.使用如下SQL语句: Sql代码  create table B as select * from A    二.Oracle数据库中支持把查询结果导入到另外一张表中.  例如:有两个表A和B 1)如果两个表的表结构是否相同,但要插入的字段类型相同:  (1)把A表的全部字段数据插入到B表中: Sql代码  insert into B select * from A;  

项目产品化——Excel数据库模板化导入(java)

Excel导入可能是代码开发中比较常见的功能,一个项目如果有多个地方需要excel导入数据库,那么开发的工作量也将比较大,项目产品化过程中,将这么一个类似的功能进行封装合并也是必要的,封装好的代码只需要 使用方法: 第一步进行数据库关于excel的配置 第二步在jsp页面引入excel导入界面即可 拿到excel模板,不需要自己写后台代码,直接在数据库配置excel列与数据库字段的关系,然后在需要excel导入的地方,引入一个连接,即可生成excel导入功能.数据库配置一定要正确 //客户信息批