Oracle批量执行sql语句之禁用所有表的外键

在转移数据库,进行数据导入的时候,遇到一件麻烦事,就是表间外键约束的存在,导致insert频频报错,批量执行sql语句又是顺序执行,没办法我只好手动输入。

然后输入到一半灵光一闪,为什么不先把外键约束全部禁用先呢?

于是我百度到以下资料:

oracle 删除(所有)约束 禁用(所有)约束 启用(所有)约束

执行以下sql生成的语句即可

1删除所有外键约束

select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R' 

2禁用所有外键约束

select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R' 

3启用所有外键约束

select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'

在SQL Plus中输入语句后,生成了很多语句,这些语句其实是没执行的,复制下来执行一遍就好了。
然后我们可以根据这个脚本一样的sql语句进行拼装,得到我们需要的语句:

禁用所有外键约束:

select 'ALTER TABLE "QIANHAI"."'||table_name||'" MODIFY CONSTRAINT "'||constraint_name||'" DISABLE;' from user_constraints where constraint_type='R' 

启用所有外键约束:

select 'ALTER TABLE "QIANHAI"."'||table_name||'" MODIFY CONSTRAINT "'||constraint_name||'" ENABLE;' from user_constraints where constraint_type='R';

关于Oracle批量执行sql语句之禁用所有表的外键的相关内容,就给大家介绍这么多,后续还会持续更新,感兴趣的朋友请继续关注我们网站,谢谢!

(0)

相关推荐

  • PHP执行批量mysql语句的解决方法

    当有多条mysql语句连起来需要执行,比如 $sqls= "insert table a values(1,2); insert table a values(2,3);" 需要执行的话php中可以使用的方法有三个: mysql_query pdo mysqli 三种方法当sqls语句没有问题的时候都是可以的. 但是 当sql语句是错误的时候会出现问题第一条sql错误:三个方法都返回false 第一条sql正确,第二条sql错误:mysql_query.pdo. mysqli:quer

  • 批量执行sql语句的方法

    复制代码 代码如下: DECLARE @MyCounter INT SET @MyCounter = 0 /*设置变量*/ WHILE (@MyCounter < 2) /*设置循环次数*/ BEGIN WAITFOR DELAY '000:00:1' /*延迟时间1秒*/ INSERT INTO comments (username) values('ahuinan') SET @MyCounter = @MyCounter + 1 END

  • c#实现用SQL池,多线程定时批量执行SQL语句的方法

    在实际项目开发中,业务逻辑层的处理速度往往很快,特别是在开发Socket通信服务的时候,网络传输很快,但是一旦加上数据库操作,性能一落千丈,数据库操作的效率往往成为一个系统整体性能的瓶颈.面对这问题,我们怎么办呢?好,下面我就为大家介绍一种方法:构建SQL池,分离业务逻辑层和数据访问层,让业务逻辑层从低效的数据库操作解脱,以提高系统整体性能. (一)SQL池 SQL池是SQL容器,用于存放业务逻辑层抛过来的SQL语句.SQL池主要提供以下几种方法: 1)internal string Pop()

  • PHP mysqli 增强 批量执行sql 语句的实现代码

    mysqli 增强-批量执行sql 语句 复制代码 代码如下: <?php //mysqli 增强-批量执行sql 语句 //批量执行dql    //使用mysqli的mysqli::multi_query() 一次性添加3个用户 $mysqli =new MySQLi("localhost","root","root","test");    if($mysqli->connect_error){       

  • 自动生成批量执行SQL脚本的批处理实例演示

    场景: DBA那边给我导出了所有的存储.函数等等对象的创建脚本,有上千个文件. 现在需要将这些对象创建脚本导入到另外一个库,如何解决呢? 手动一个个执行显然不太现实. 于是手动写了一个批处理,将所有的文件形成一个.SQL的脚本,最后以@生成的.SQL脚本方式导入到目标库中. OS环境:WINDOWS xp 脚本内容如下: 复制代码 代码如下: @echo off if exist list.sql del list.sql /q :input cls set input=: set /p inp

  • php+mysqli实现批量执行插入、更新及删除数据的方法

    本文实例讲述了php+mysqli实现批量执行插入.更新及删除数据的方法.分享给大家供大家参考.具体如下: mysqli批量执行插入/更新/删除数据,函数为 multi_query(). 下面的代码只是批量插入数据,事实上,插入数据.更新数据.删除数据等可以混合一起执行.查询时使用该函数,读取数据有点不太一样,具体参考如下代码: <?php //1.创建数据库连接对象 $mysqli = new MySQLi("localhost","root","

  • sqlserver中通过osql/ocmd批处理批量执行sql文件的方法

    利用osql/ocmd批处理批量执行sql文件 注意:在上图中我们可以看到osql 并不支持 SQL Server 2008的所有功能,如果需要使用SQL Server 2008的所有功能可以使用ocmd命令. 有了osql/ocmd命令要批量执行sql文件当然需要写一个批处理命令,例如我们执行上面sql文件就可以在txt中编写下面的语句: 复制代码 代码如下: osql -S"127.0.0.1" -U"sa" -P"sa" -d"N

  • java 下执行mysql 批量插入的几种方法及用时

    方法1: Java code 复制代码 代码如下: conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS);        pstmt = conn                .prepareStatement("insert into loadtest (id, data) values (?, ?)");        for (int i = 1; i <= COUNT; i++) {    

  • Oracle批量执行sql语句之禁用所有表的外键

    在转移数据库,进行数据导入的时候,遇到一件麻烦事,就是表间外键约束的存在,导致insert频频报错,批量执行sql语句又是顺序执行,没办法我只好手动输入. 然后输入到一半灵光一闪,为什么不先把外键约束全部禁用先呢? 于是我百度到以下资料: oracle 删除(所有)约束 禁用(所有)约束 启用(所有)约束 执行以下sql生成的语句即可 1删除所有外键约束 select 'alter table '||table_name||' drop constraint '||constraint_name

  • Oracle基础:通过sqlplus执行sql语句后的结果进行判断

    这篇文章介绍一下如何对sqlplus执行的sql语句结果进行判断. 环境准备 使用Oracle的精简版创建docker方式的demo环境,详细可参看: https://www.jb51.net/article/153533.htm 常见问题 在sqlplus中执行sql语句,如果直接使用命令行的方式调用时会碰到两个问题: 问题1: 需要进行交互性的输入 问题2:结果的判断不能通过返回值来确认 解决方式 在脚本调用里,解决方式如下 问题1可以通过前文提到的Here Document来解决. 问题2

  • Oracle数据库中SQL语句的优化技巧

    在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 2. /*+FIRST_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.

  • 使用BAT批处理执行sql语句的代码

    1.把待执行Sql保存在一个文件,这里为20110224.sql.2.新建一个扩展名.bat的批处理文件,输入下面命令并保存后,双击.bat文件,系统会自动执行20110224.sql的语句: 复制代码 代码如下: osql -S gdjlc -d TestDB -U sa -P 1 -i 20110224.sql osql参数见下面=======================================================================: E:\>osql

  • php使用PDO执行SQL语句的方法分析

    本文实例讲述了php使用PDO执行SQL语句的方法.分享给大家供大家参考,具体如下: exec()方法 exec()方法返回执行后受影响行数,语法如下: int PDO::exec(string statement) 参数statement是要执行的SQL语句.该方法返回执行查询时受影响的行数,通常情况下用于INSERT,DELETE和UPDATE语句中. 例如: $dbms='mysql';//数据库类型 $dbName='admin';//使用的数据库 $user='root';//数据库连

  • 在mybatis执行SQL语句之前进行拦击处理实例

    比较适用于在分页时候进行拦截.对分页的SQL语句通过封装处理,处理成不同的分页sql. 实用性比较强. import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import java.util.Properties; import org.apache.ibatis.e

随机推荐