`
radzhang
  • 浏览: 307725 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Postgresql的批量数据删除

 
阅读更多

导入postgresql

导入数据库是用 copy from,具体命令如下:

copy tablename from file CSV HEADER DELIMITER ',' ENCODING 'GBK';

参数说明:csv 表示文件格式

 

                 header 表示文件第一行为字段名,导入数据库时忽略首行

 

                 delimiter 表示字段分割方式,示例是以逗号分割

 

                 encoding 表示文件编码方式,示例是 GBK 编码,(默认为utf-8)

 

从postgresql导出

导出数据时用 copy to,具体命令如下:

 

copy tablename(a,b) to filename delimiter ',' csv header encoding 'GBK';

参数说明:与导入的参数一致

 

如果需要将查询结果导出,则:

 

copy (select * from tablename) to filename delimiter ',' csv header encoding 'GBK';

注意点:1)如果需要把表中所有数据都导出,则不需要注明字段名

 

              2)数据库用户需要有写文件的权限,postgresql默认的有权限路径是在/tmp 下

 

在 mysql 中如果需要清空表,只需要

TRUNCATE table_name;

即可,如果有自增的 id 字段,也会还原回 1,

但是 postgresql 与 mysql 稍有不同,postgresql 的自增字段 是通过 序列 sequence来实现的,

所以在清空表的时候,还需要还原序列

TRUNCATE TABLE table_name RESTART IDENTITY;

当需要对一些不需要的历史数据进行大批量删除时, 在使用delete语句时,会发现在删除一些数据时会非常慢

比如 DELETE FROM test where id < 10000;

删除缓慢的原因主要在于外键约束,当数据库在有约束的情况下,无论进行删除或者更新操作, 都会对相关表进行一个校验,判断相关表的相关记录是否被删除或者更新。 这个检查的过程会非常慢, 尤其在外建表又关联着外建表的这种层层嵌套的情况下。

解决方法: 

ALTER TABLE test DISABLE TRIGGER ALL;

这样就会发现,删除的速度会大幅度上升, 之前对于操作过的嵌套表删除时,从几十分钟到1分钟以内,瞬间提速很多。

在删除完数据后, 一定要记得把trigger改回来, 调用:

ALTER TABLE test ENABLE TRIGGER ALL;

在删除完数据后,再重新对物理表进行一个优化

1.  使用vacuum(维护数据库磁盘的工具)删除那些已经被标记为删除的数据,并释放空间。但是vacuum工具不能对相应的索引进行清理,所以需要第二步重建索引

vacuum FULL test

2. 重新建立索引提高查询效率 

REINDEX TABLE test

分享到:
评论

相关推荐

    mybatis postgresql 批量删除操作方法

    MyBatis PostgreSQL 批量删除操作方法 MyBatis 是一个基于 Java 的持久层框架,它提供了一个简单的方式来交互数据库。在本文中,我们将介绍如何使用 MyBatis 实现 PostgreSQL 批量删除操作。 PostgreSQL 简介 ...

    PostgreSQL表分区和子表及删除所有的数据库表.zip

    PostgreSQL表分区和子表及删除所有的数据库表 最近需求要求统计DNS近7天每天的解析情况。数据量相对大,所以我这边对表进行分区。 对每天的数据进行分区...所以我这边会对第8天的数据删除,删除第8天的分区表即可。

    mysql postgresql Greenplum 实时同步

    2. **DELETE+COPY方式**:不同于传统的INSERT+UPDATE+DELETE模式,Bireme利用DELETE+COPY机制,在插入新数据之前先删除旧数据中的主键对应的记录,之后再执行插入操作,以实现更高效的同步过程。 3. **支持多种数据...

    Postgresql存储过程.docx

    PostgreSQL 存储过程是一种强大的功能,可以实现复杂的逻辑操作和数据处理。下面将详细介绍 PostgreSQL 存储过程的结构、变量类型、连接字符、控制结构等知识点。 一、存储过程结构 存储过程的基本结构如下所示: ...

    PostgreSQL从菜鸟到专家

    - **通过PostgreSQL访问数据**:讨论了客户端如何通过各种方式与PostgreSQL服务器通信。 - **什么是开源?**:解释了开源软件的概念及其对PostgreSQL社区的意义。 - **相关资源**:提供了学习PostgreSQL的外部资源...

    PostgreSQL.官方文档

    - **删除数据**(2.9节):阐述如何安全地从表中删除不需要的数据,防止误删。 #### 四、高级特性 - **视图**(3.2节):解释了视图的概念及其作用,指导如何创建和管理视图。 - **外键**(3.3节):介绍了外键...

    postgresql-9.4API帮助

    - **更新与删除**:说明了如何修改现有数据以及删除不需要的数据记录。 ##### 3. 高级特性 - **视图**:介绍了视图的概念及其创建方法,视图可以简化复杂的查询操作。 - **外键约束**:解释了如何使用外键约束来...

    PostgreSQL数据库WEB远程维护管理软件

    TreeDMS数据库管理系统使用JAVA开发,实现基于WEB方式对 PostgreSQL 数据库进行维护管理操作。 功能包括:数据库的展示,库表的展示,表字段结构的展示, SQL语句的在线编辑批量执行,表结构的在线设计维护, 数据的...

    PostgreSQL & Oracle-备份恢复技术大比拼

    SQL*Loader是Oracle提供的一个批量数据加载工具,它可以处理大量的数据加载需求,并支持多种控制文件的配置,允许用户对导入的数据进行控制和格式化。此外,Oracle还提供了外部表的概念,允许将数据从Oracle数据库...

    用JDBC连接OpenGauss Postgresql 实现增删改查功能的图书管理系统

    2. **删除(Delete)**:根据条件删除图书,例如按ID删除: ```java sql = "DELETE FROM books WHERE id = ?"; pstmt = conn.prepareStatement(sql); pstmt.setInt(1, 1); // ID of the book to delete pstmt....

    PostgreSQL实用实例参考

    涉及批量插入、更新、删除操作和保持数据完整性的例子。 12. 用户权限 最后,手册讲解了用户权限管理,包括如何设置用户组以及权限方面的内容。 由于文档中存在OCR扫描的错误识别和漏识别问题,部分内容可能需要...

    dbForge.Studio.for(mysql,sql,Oracle,PostgreSQL)

    3. **数据操作**:允许用户浏览、添加、编辑和删除数据库记录,支持批量操作。 4. **数据同步和比较**:比较并同步数据库结构和数据,确保多环境一致性。 5. **性能调优**:分析查询性能,提供优化建议,提升数据库...

    mass-js:Node.js和PostgreSQL数据映射器

    在`mass-js`中,可以方便地执行批量插入、更新或删除操作,这在处理大量数据时非常有用。例如,批量插入用户: ```javascript const users = [{ name: 'Alice' }, { name: 'Bob' }]; User.insert(users).then(() =&gt;...

    从pgsql 数据库导出数据字典

    在PostgreSQL(pgsql)这样的关系型数据库管理系统中,数据字典通常是指一系列元数据,这些元数据描述了数据库的结构、对象以及它们之间的关系。本篇文章将详细探讨如何从PostgreSQL数据库导出数据字典,以及为何这...

    postgresql-9.0-A4.pdf

    本节讲解了如何向表中插入数据,包括单行插入和批量插入的方法。 ##### 2.5 查询表 这一部分详细介绍了如何查询表中的数据,包括简单的 SELECT 语句和复杂的 JOIN 操作。 ##### 2.6 表间的联接 这里讲解了如何使用...

    MySQL,Oracle,PostgreSQL 数据库WEB维护管理软件

    功能包括:数据库的展示,库表的展示,表字段结构的展示, SQL语句的在线编辑批量执行,表结构的在线设计维护,数据的在线编辑维护,查询语句保存,JSON数据格式化,SQL语法帮助,在线数据源选择配置等。系统内置14套...

    postgreSQL经典教程

    **6.2 数据更新与删除** - **UPDATE语句**:根据条件修改数据。 - **DELETE与TRUNCATE**:分别用于删除指定记录与清空整表。 #### 七、高级数据选择技巧 **7.1 聚合函数应用** - **COUNT统计**:计算满足条件的...

Global site tag (gtag.js) - Google Analytics