目的及由来,因为数据库表都采取逻辑删除isDeleted=true/flase,但是之前有些报表或者其他的sql并没有在sql中指明此条件。为了不影响之前代码,所以:

1、数据库中创建一张相同的表,把删除的记录保存到备份表bak_table,bak_table的所有字段均与原表一致(包括isDeleted)。然后原表做物理删除。

(以下可能只适用于oracle)

一、利用oracle的语法 createt table … as ; insert into…

1、复制表结构以及数据
create table target_table as select * from source_table;
-- 1、target并不会创建索引、默认值、非空等约束条件 (暂时只知道这3个没有)
-- 可能需要target_table不存在 2、只复制表结构
create table target_table as select * from source_table where 0=1;
-- 条件成立则复制成立的数据,没有成立的数据则只有表 3、复制数据
(1)、两个表结构一样
insert into target_table select * from source_table where id = ?; (2)、两个表的结构不一样,只复制部分列
insert into target_table (column1,column2,column3) select column1x,column2x,column3x from source_table;

二、利用工具pl/sql、navicat导出表结构的sql,在修改成对应的target_table的创建语法。

这样的好处是,有默认值、非空约束、索引。但触发器不一定能创建,而且target_table不一定需要这些。就如前面说的,备份逻辑删除的数据,其实只要一模一样也不会操作,只是后面可能需要关联查到被删除的数据信息而已。

(但,可能查询速度相对第一种较慢。)

三、备注

没有特别去看上面2种的优劣,只是查找怎么做的时候无意在oralce官方文档看到了下面的东西: ORACLE CREATE TABLE

PARALLEL Example The following statement creates a table using an optimum number of parallel execution servers to scan employees and to populate dept_80:

CREATE TABLE dept_80
PARALLEL
AS SELECT * FROM employees
WHERE department_id = 80;

Using parallelism speeds up the creation of the table, because the database uses parallel execution servers to create the table.

After the table is created, querying the table is also faster, because the same degree of parallelism is used to access the table.

(可是还有因为英语不好,在理解上有错误…><!)

附录:

oracle复制表数据,复制表结构

ORACLE Creating Tables

ORACLE CREATE TABLE

【database】复制表数据到相同备份表的更多相关文章

  1. 取A表数据,关联B表任意一条数据

     表A=================== AID, AName 1 jack 2 mary 3 lily 表B================== BID, AID, BName 1 1 aaa ...

  2. sqlserver复制表数据到另一个表

    SQL Server中,如果目标表存在: insert into 目标表 select * from 原表; SQL Server中,,如果目标表不存在: select * into 目标表 from ...

  3. SQL Server 的表数据简单操作(表数据查询)

    --表数据查询----数据的基本查询-- --数据简单的查询--select * | 字段名[,字段名2, ...] from 数据表名 [where 条件表达式] 例: use 商品管理数据库 go ...

  4. merge源表数据移植到目标表新表数据中

    merge into dbo.ak_SloteCardTimes a using(select RecordID,CardNO,SloteCardTime from dbo.Tb_CardDate b ...

  5. 设计一个A表数据抽取到B表的抽取过程

    原题如下: 解题代码如下: table1类: @Data @NoArgsConstructor @AllArgsConstructor public class table1{ private Str ...

  6. sql server复制表数据到另外一个表 的存储过程

    ) Drop Procedure GenerateData go CREATE PROCEDURE GenerateData @tablename sysname AS begin ) ) ) dec ...

  7. MongoDB 通过自带工具命令进行备份表,再将备份表还原出数据

    创建一个bat文件 在其中输入以下3行 第1行进入工具mongodump所在的目录 第2行 将Adam数据库里面的 第3行 将上面存在C:\Data\Dump\Adam\文件夹里面的TBLQuickS ...

  8. 获取B表数据添加到A表中作为一个下拉列表元素存在

    1.ProductController类里toedit方法内添加: ProductModel product = ProductModel.dao.findById(id); //通过id查找服务类 ...

  9. mysql把A表数据插入到B表数据的几种方法

    web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码 ...

随机推荐

  1. 11--Java--JDBC知识梳理

    JDBC 一.概述:JDBC(java database connection),使用java语言连接数据库,是java提供一套操作数据库的接口(标准),实现对数据库的统一访问,是一个java引用应用 ...

  2. Jmeter之上传文件

    前言 我们可以利用postman工具来测试上传文件的接口,那么假如要利用Jmeter工具来进行上传接口的测试,又该如何测试呢? 上传文件的接口地址:/pinter/file/api/upload:接口 ...

  3. centos7 上为php-fpm安装gd扩展库

    转自:https://blog.csdn.net/liyyzz33/article/details/89166110 首先查看自己当前php的版本 php -v PHP 5.6.40 查看yum中是否 ...

  4. Spring Boot集群管理工具KafkaAdminClient

    能与原理介绍 在Kafka官网中这么描述AdminClient:The AdminClient API supports managing and inspecting topics, brokers ...

  5. 查看 Linux 中文件打开情况(lsof)

    前言 我们都知道,在linux下,“一切皆文件”,因此有时候查看文件的打开情况,就显得格外重要,而这里有一个命令能够在这件事上很好的帮助我们-它就是lsof. Linux 下有哪些文件 在介绍lsof ...

  6. 07_TypeScript命名空间

    命名空间:内部模块,主要用于组织代码,避免命名冲突. 关键字:namespace //俩个类命名冲突 class Dog{ name: string; constructor(name: string ...

  7. vue自带的实例属性和方法($打头)

    Vue 实例内置了一些有用的实例属性与方法.它们都有前缀 $,以便与用户定义的属性区分开来.例如: var data = { a: 1 } var vm = new Vue({ el: '#examp ...

  8. c++ 有符号int和无符号int做加减乘除问题

    c++ 有符号int和无符号int做加算术运算的问题: 一.运算过程先把有符号的补码数直接看成无符号数,在和无符号数进行算术运算 二.int和unsigned int类型进行混合算数运算时,运算结果为 ...

  9. POJ 1753 Flip Game 暴力 深搜

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 59468   Accepted: 24750 Descr ...

  10. git命令小汇总和github

    Git 简介 是什么 Git 也是一个版本控制管理软件 有什么用,可以解决什么问题 保存历史记录 多人协作 有了 SVN,为啥要学 Git Git 火 Git 相对于 SVN 来说,更强大,用户也非常 ...