`
radzhang
  • 浏览: 302610 次
  • 性别: 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 批量删除操作方法

    PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),这篇文章主要介绍了mybatis postgresql 批量删除操作,需要的朋友可以参考下

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

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

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

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

    Postgresql存储过程.docx

    数据库存储过程:包括控制if,循环while/for/loop的实现

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

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

    Discuz! 3.1.2 商业版

    不仅提供详细周密的论坛和用户组权限设定,而且,可根据 10 余种以上的条件实现用户编辑,批量删贴,附件编辑等,且可自动对有关的数据,如用户发帖数,积分,论坛数据等等做智能处理,确保了批量操作后统计数据的精确性....

    PostgreSQL教程(十):性能提升技巧

    主要介绍了PostgreSQL教程(十):性能提升技巧,本文讲解了使用EXPLAIN、批量数据插入、关闭自动提交、使用COPY、 删除索引、删除外键约束等技巧,需要的朋友可以参考下

    maku-generator是一款低代码生成器,可根据自定义模板内容,快速生成代码.rar

    更新日志 增加 Clickhouse 数据库的支持 优化列字段,删除查询字典类型字段 优化表单配置,默认勾选全部表单项 优化生成菜单 SQL 文件,可能重名的问题 ...支持批量导入表、批量生成代码以及同步表结构等功能

    DBConvert for MSSQL and DB2 2.1.1 中文免费版.zip

    当您需要移动,删除或仅插入已修改的记录时,这对于部分数据复制也很有用。 我们的应用程序可以达到最大可能的转换速度,因此可以节省您在数据库转换方面的时间用户友好的界面和广泛的功能可以帮助您减少转换所需的...

    file_db:将目录和文件元数据(包括文件哈希)加载并维护到postgres数据库中,并通过SQL提供对文件系统的控制

    利用越来越多的内置工具来处理数据以观察趋势,识别重复文件,跟踪文件系统更改,批量复制/移动/删除等等。 可以使用SQL直接查询数据库,因此您可以直接深入研究数据。 该数据库包含许多预制函数,使生活变得轻松。...

    javapms门户网站源码

    管理员也可以通过勾选每条评论前面的复选框,对评论进行批量删除或审核。评论详情如下图所示: 网友在前台可以对评论进行回复或顶操作,支持评论堆楼的效果,如下图所示: 2.4.2. 留言管理 点击“功能组件”左侧...

Global site tag (gtag.js) - Google Analytics