精华内容
下载资源
问答
  • 最近在项目发版测试的时候,导出dmp的时候不小心把开发库中的一些脏数据导出来了,测试那边导入进去之后一堆不规范的数据,为了不影响测试结果,于是总结了一个快速清空数据库数据表所有数据的方法。 二、方法 (1)...

    一、简介

    最近在项目发版测试的时候,导出dmp的时候不小心把开发库中的一些脏数据导出来了,测试那边导入进去之后一堆不规范的数据,为了不影响测试结果,于是总结了一个快速清空数据库数据表所有数据的方法。

    二、方法

    (1). 第一种方法:分步骤实现

     【a】第一步:禁止所有的外键约束.

    打开plsql ,新建一个查询窗口,输入:

    SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' ||
    
           constraint_name || ';'
    
      FROM user_constraints
    
     where CONSTRAINT_TYPE = 'R';

    打开能执行sql的窗口即可

    【b】第二步:用delete或truncate删除所有表的内容

    SELECT 'DELETE FROM ' || table_name || ';'
    
      FROM USER_TABLES
    
     ORDER BY TABLE_NAME;

    【c】第三步:启用所有的外键约束

    SELECT 'ALTER TABLE ' || table_name || ' enable CONSTRAINT ' ||
    
           constraint_name || ';'
    
      FROM user_constraints
    
     where CONSTRAINT_TYPE = 'R';

    依次执行完这三个步骤之后,发现数据库中所有的数据表的数据都清空。

    (2).第二种方法:执行脚本生成的sql,然后统一执行

    【a】打开plsql查询窗口,执行如下plsql脚本

    begin
      dbms_output.put_line('--禁用外键SQL【开始】');
      for var1 in (SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' ||
                          constraint_name || ';' as sqltext
                     FROM user_constraints
                    where CONSTRAINT_TYPE = 'R') loop
        dbms_output.put_line(var1.sqltext);
      end loop;
      dbms_output.put_line('--禁用外键SQL【结束】');
      dbms_output.new_line;
    
      dbms_output.put_line('--删除表记录SQL【开始】');
      for var1 in (SELECT 'DELETE FROM ' || table_name || ';' as sqltext
                     FROM USER_TABLES
                    ORDER BY TABLE_NAME) loop
        dbms_output.put_line(var1.sqltext);
      end loop;
      dbms_output.put_line('--删除表记录SQL【结束】');
      dbms_output.new_line;
    
      dbms_output.put_line('--启用外键SQL【开始】');
      for var1 in (SELECT 'ALTER TABLE ' || table_name || ' enable CONSTRAINT ' ||
                          constraint_name || ';' as sqltext
                     FROM user_constraints
                    where CONSTRAINT_TYPE = 'R') loop
        dbms_output.put_line(var1.sqltext);
      end loop;
      dbms_output.put_line('--启用外键SQL【结束】');
      dbms_output.new_line;
    end;
    

    【b】然后在output这个tab中复制出所有的sql

    【c】统一执行sql:

    推荐使用第二种方法,更加简单方便,但是如果在生产环境中的话,凡是涉及到删除数据的都要谨慎操作,防止用户的数据丢失,如果大家在有需要清空数据的时候可以考虑使用该方法。

     

     

    展开全文
  • 查阅了一些资料,很多人的意见是备份一个只包含数据库表结构的backup文件,然后删掉数据库,然后恢复。 正在我的实践中是有点问题的,因为使用数据库的人不止我一个,人家数据库不让我删除。而且我执行的时候出了很...

    查阅了一些资料,很多人的意见是备份一个只包含数据库表结构的backup文件,然后删掉数据库,然后恢复。
    正在我的实践中是有点问题的,因为使用数据库的人不止我一个,人家数据库不让我删除。而且我执行的时候出了很多我一时解决不了的错误(这才是原因),所以我智能找点别的办法,稍微记录下。
    我是用的是postgre数据库,其他的应该差不多的。
    方法就是找到你库里的所以表,然后级联删除表的内容(级联删除,级联删除,级联删除)。再附上几行代码:

    QString sqlStr= "select tablename from pg_tables where schemaname='public' ;//少个引号,加上编辑有点问题
    QSqlQuery query(sqlStr,connectDB(dbName));
    QList<QString> databaseNameList;
    while(query.next())
    {
        databaseNameList.push_back(query.value(0).toString());
    }
    for(int i=0;i<databaseNameList.size();i++)
    {
        QString truncateSql="truncate table "+databaseNameList.at(i)+" CASCADE";
    }
    
    

    关于truncate命令可以参考文章这里写链接内容

    展开全文
  • shell清空数据库表

    2020-08-18 16:53:20
    #数据库ip地址 host=“XXXXXX” #数据库端口 port=“XXXXXX” #数据库用户名 userName=“XXXXXX” #数据库密码 ...#̲查询并生成要清空表命令 cm…{dbName}’" #删除以前清空表命令 rm -f currPath/{cur
    #! /bin/bash
    
    #数据库ip地址
    host="XXXXXX"
    #数据库端口
    port="XXXXXX"
    #数据库用户名
    userName="XXXXXX"
    #数据库密码
    password="XXXXXX"
    #数据库名
    dbName="XXXXXX"
    #当前路径
    currPath="$PWD"
    #查询并生成要清空表的命令
    cmd="SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') FROM information_schema.TABLES WHERE TABLE_SCHEMA='${dbName}'"
    
    #删除以前清空表的命令
    rm -f ${currPath}/${dbName}"_truncate.sql"
    #查询最新要清空表的命令
    mysql -h${host} -u${userName} -p${password} ${dbName} -P${port} -N -e "${cmd}">${currPath}/${dbName}"_truncate.sql"
    #若日志路径不存在 就创建日志路径
    if [ ! -d "${currPath}/logs" ]; then
      mkdir ${currPath}/logs
    fi
    #日志文件全路径
    logPath=${currPath}"/logs/"${dbName}"_truncate_log"$(date +%Y-%m-%d-%H-%M-%S)
    #清空表
    mysql -h${host} -u${userName} -p${password} ${dbName} -P${port} -e "source ${currPath}/${dbName}"_truncate.sql"" -vvv|tee -a ${logPath}
    echo "Clear data of ${dbName} successful"
    #删除前面清空表的命令
    rm -f ${currPath}/${dbName}"_truncate.sql"
    
    
    
    展开全文
  • sql server 清空数据库所有数据

    千次阅读 2016-03-30 10:23:37
    其实删除数据库数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_...

    其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_MSForEachTable存储过程。


    也许很多读者朋友都经历过这样的事情:要在开发数据库基础上清理一个空库,但由于对数据库结构缺乏整体了解,在删除一个表的记录时,删除不了,因为可能有外键约束,一个常见的数据库结构是一个主表,一个子表,这种情况下一般都得先删除子表记录,再删除主表记录。


    说道删除数据记录,往往马上会想到的是delete和truncate语句,但在遇到在两个或多个表之间存在约束的话,这两个语句可能都会失效,而且最要命的是这两个命令都只能一次操作一个表。那么真正遇到要删除SQL Server数据库中所有记录时,该怎么办呢?有两个选择:


    1.按照先后顺序逐个删除,这个方法在表非常多的情况下显得很不现实,即便是表数量不多,但约束比较多时,你还是要花费大量的时间和精力去研究其间的约束关系,然后找出先删哪个表,再删哪个表,最后又删哪个表。


    2.禁用所有约束,删除所有数据,最后再启用约束,这样就不用花时间和精力去研究什么约束了,只需要编写一个简单的存储过程就可以自动完成这个任务。
    从这两个选择中不难看出第二个选择是最简单有效的了,那么在使用第二个选择时,具体该怎么实施呢?
    首先得编写代码循环检查所有的表,这里我推荐一个存储过程sp_MSForEachTable,因为在微软的官方文档中没有对这个存储过程有描述,很多开发人员也许都还未曾听说,所以你在互联网上搜索得到的解决办法大多很复杂,也许有的人会认为,既然没有官方文档,这个存储过程可能会不稳定,打心理上会排斥它,但事实并非如此。下面来先看一个完整的脚本:

    CREATE PROCEDURE sp_DeleteAllData
    AS
    EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
    EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL'
    EXEC sp_MSForEachTable 'DELETE FROM ?'
    EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
    EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL'
    EXEC sp_MSFOREACHTABLE 'SELECT * FROM ?'
    GO

    这个脚本创建了一个命名为sp_DeleteAllData的存储过程,前面两行语句分别禁用约束和触发器,第三条语句才是真正地删除所有数据,接下里的语句分别还原约束和触发器,最后一条语句是显示每个表中的记录,当然这条语句也可以不要,我只是想确认一下是否清空了所有表而已。





    原文地址:http://www.cnblogs.com/Real_Dream/articles/1577908.html


    展开全文
  • 【SQLSERVER】清空数据库所有表数据

    千次阅读 2013-11-15 10:05:41
    01.-------清空数据库所有表数据 02.exec sp_MSforeachtable "truncate table ?" 03. 04.----查询数据库所有表名 05.select [name] from sysobjects where type='u' 06. 07.--- 游标 清空所
  • mysql phpmyadmin 定时清空数据库数据表

    千次阅读 2016-07-17 17:42:51
    1、开启事件调度器  确认是否开启  SHOW VARIABLES LIKE 'event_scheduler'... 开启命令  SET GLOBAL event_scheduler = ON; 2、创建事件  CREATE EVENT [IFNOT EXISTS] event_name  ONSCHEDULE schedu
  • SQL 清空数据库的所有表数据

    千次阅读 2010-06-13 18:40:00
    近来发现数据库过大,空间不足,因此打算将数据库数据进行全面的清理,但非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进行清空.使用的数据库为MS SQL SERVER. 1...
  • 近来发现数据库过大,空间不足,因此打算将数据库数据进行全面的清理,但非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进行清空.使用的数据库为MS SQL SERVER. 1.搜索出...
  • 清空数据库表结构的几种方式

    万次阅读 2017-08-10 13:40:37
    一、SQL中的语法  1、drop table 名称 eg: drop table dbo.Sys_Test  2、truncate table 名称 eg: truncate table dbo.Sys_Test  3、delete fro
  • 其实删除数据库数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_...
  • 问题: ...我们的数据库表中经常会使用id自增长,但是每次清空表后id并不是从1开始计数,总是接着之前的进行自增,那么要如何解决呢? 解决方法: 使用mysql的truncate命令 truncate 表名; ...
  • Access数据库清空表数据

    千次阅读 2014-03-15 20:38:03
    delete from alter table alter column id counter(1,1) 这样,分2次执行
  • 清空数据库里所有的 清除数据库里的所有数据
  • 清空SQL Server数据库中所有表数据的方法(有约束的情况) 其实删除数据库数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作...
  • hive的数据库表操作命令

    千次阅读 2019-07-05 11:03:06
    //Linux文件转码 iconv PhoneInfo.txt -f GBK -t UTF-8 -o data.txt //查看的结构 desc 表名 desc extends 表名 desc formatted 表名 ...//查询数据 ...select id,name,sex,age,...//中加入数据 load data ...
  • ####mysql命令登录数据库 1.mysql -u root -ppassword 2.mysql -u root -p Enter password:****提示输入密码 3.mysql -h localhost -u root -ppassword 4.mysql -h 127.0.0.1 -u root -ppassword 5.-p参数和...
  • 清空表数据: private SQLiteHelper mHelper; mHelper = new SQLiteHelper(this); SQLiteDatabase db = mHelper.getReadableDatabase(); db.execSQL("delete from sporttable"); 删除某张表: private SQLite...
  • SQL server 清空数据库所有

    千次阅读 2018-12-13 09:38:42
    这个会删除所有的 数据表 假如要保留数据表结构的话 吧 drop 改成 truncate use 数据库名(是要删除的所在的那个数据库的名称) GO declare @sql varchar(8000) while (select count(*) from sysobjects where ...
  •  一般情况下,我们使用delete删除数据,但是delete是一条数据一条数据来删除中的数据,直至表清空(保留结构),但是当数据量很大时,它耗时较久。  其实,删除表数据但保留结构使用truncate更快速安全...
  • SQLserver 清空数据库所有

    千次阅读 2019-01-12 19:29:56
    use 数据库名(是要删除的所在的那个数据库的名称) GO declare @sql varchar(8000) while (select count(*) from sysobjects where type='U')&gt;0 begin SELECT @sql='drop table ' + name FROM sysobjects ...
  • linux 清空数据表命令

    千次阅读 2016-12-09 16:54:35
    bymt_db_manager.py -d -t 表名
  • 想找一个命令清空数据库中所有用户的方法没有找到,只能用一个比较烦琐的方法,不知道有没有更简单的方法? declare @strSqlTmp varchar(8000)declare @strSql varchar(8000)set @strSqlTmp = ''declare online_...
  • ') from INFORMATION_SCHEMA.TABLES where table_schema in ('数据库1','数据库2'); 以名为dbname的数据库为例,执行select语句: mysql> select CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME, ';') ...
  • 数据库数据表创建

    千次阅读 2019-04-20 08:37:02
    实验步骤: 1.创建教学管理“JXGL”数据库。(注:可采用可视窗体和SQL命令两种方法创建。...(2) 清空命令窗格后,在JXGL数据库中建立STUDENT,并插入记录,然后执行。 CREATE TABLE STUDENT (S...
  • 删除数据库内所有的 删除项目的migrations文件夹中的所有 ...以上这篇使用Django清空数据库并重新生成就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章
  • 因为可能有外键约束,一个常见的数据库结构是一个主,一个子, 这种情况下一般都得先删除子记录,再删除主记录。 说到删除数据记录,往往马上会想到的是delete和truncate语句, 但在遇到在两个或多个之间...
  • sqlserver 清空数据库日志,代码整理
  • mysql数据库清空表格中数据恢复

    千次阅读 2013-09-12 19:45:57
    有一次,同事的数据库由于开发人员的数据订正误操作,导致了一张的所有数据清空,由于该库的数据容量已经达到了几百G,从备份中恢复需要很长的时间,所以联系到我帮助恢复,由于数据库采用的是ro
  • 其实删除数据库数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_...
  • 数据库命令清除整个数据库数据

    万次阅读 2018-11-05 15:10:40
    MySQL 用 truncate 命令快速清空一个数据库中的所有。 先执行select语句生成所有truncate语句 语句格式: select CONCAT(‘truncate TABLE ‘,table_schema,’.’,TABLE_NAME, ‘;’) from INFORMATION_SCHEMA....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,353
精华内容 32,941
关键字:

清空数据库表数据命令