精华内容
下载资源
问答
  • 【postgresql】pgAdmin4删除表格行数据

    千次阅读 2020-04-20 11:09:44
    —打开属性表后,上排有一行工具栏 ,刚开始想删除一行数据时,-----删除图标一直是暗的。 ----原来没有设置主键 ----设置主键之后,在点击表格行,删除图标就是亮的了,可以删除数据了。 —双击表格单元,就可以...

    —打开属性表后,上排有一行工具栏 ,刚开始想删除一行数据时,-----删除图标一直是暗的。
    ----原来没有设置主键
    ----设置主键之后,在点击表格行,删除图标就是亮的了,可以删除行数据了。
    —双击表格单元,就可以编辑数据
    在这里插入图片描述

    展开全文
  • 但是pg_xlog下面的日志又不能随意删除,否则有可能导致数据库起不来。PostgreSQL自带了清理wal日志的工具叫pg_resetxlog,其实是通过重置xlog的值来清理xlog文件。但是这个工具通常在到万不得已,不要使用。下面示例...
    之前讨论过如果归档或者流复制出现问题的时候,pg_xlog下面会不断地产生WAL日志,严重会塞满磁盘空间。但是pg_xlog下面的日志又不能随意删除,否则有可能导致数据库起不来。PostgreSQL自带了清理wal日志的工具叫pg_resetxlog,其实是通过重置xlog的值来清理xlog文件。但是这个工具通常在到万不得已,不要使用。下面示例如下:

    环境: PostgreSQL 9.1.3
    VMWARE 6.0
    IP:192.168.1.103

    一、重置前环境
    [postgres@localhost pg_xlog]$ ll
    total 1310732
    -rw-------. 1 postgres postgres 67108864 Aug 19 19:46 00000004000000010000003A
    -rw-------. 1 postgres postgres 67108864 Nov 10 22:13 00000004000000010000003B
    -rw-------. 1 postgres postgres 67108864 Nov 10 22:24 00000004000000010000003C
    -rw-------. 1 postgres postgres      290 Nov 10 22:24 00000004000000010000003C.00000020.backup
    -rw-------. 1 postgres postgres 67108864 Nov 10 22:54 00000004000000010000003D
    -rw-------. 1 postgres postgres 67108864 Nov 10 23:15 00000004000000010000003E
    -rw-------. 1 postgres postgres 67108864 Nov 10 23:30 000000040000000200000000
    -rw-------. 1 postgres postgres 67108864 Nov 10 23:39 000000040000000200000001
    -rw-------. 1 postgres postgres 67108864 Nov 11 08:31 000000040000000200000002
    -rw-------. 1 postgres postgres 67108864 Nov 11 08:38 000000040000000200000003
    -rw-------. 1 postgres postgres 67108864 Nov 17 08:09 000000040000000200000004
    -rw-------. 1 postgres postgres 67108864 Dec 31 12:20 000000040000000200000005
    -rw-------. 1 postgres postgres 67108864 Jan  3 09:35 000000040000000200000006
    -rw-------. 1 postgres postgres 67108864 Jan 10 07:46 000000040000000200000007
    -rw-------. 1 postgres postgres 67108864 Jan 10 07:48 000000040000000200000008
    -rw-------. 1 postgres postgres 67108864 Jan 10 07:52 000000040000000200000009
    -rw-------. 1 postgres postgres 67108864 Jan 10 07:52 00000004000000020000000A
    -rw-------. 1 postgres postgres 67108864 Jan 10 07:52 00000004000000020000000B
    -rw-------. 1 postgres postgres 67108864 Jan 10 07:52 00000004000000020000000C
    -rw-------. 1 postgres postgres      113 Jun 17  2012 00000004.history
    drwxrwxr-x. 2 postgres postgres     4096 Jan 10 07:52 archive_status
    -rw-------. 1 postgres postgres 67108864 Nov 17 08:09 xlogtemp.1461
    -rw-------. 1 postgres postgres 67108864 Jan  3 09:35 xlogtemp.1518
    [postgres@localhost pg_xlog]$ cd ..
    [postgres@localhost pgdata]$ du -sh pg_xlog/
    1.3G    pg_xlog/
    二、关闭数据库
    [postgres@localhost pg_xlog]$ pg_stop
    waiting for server to shut down...... done
    server stopped
    三、查看版本控制信息
    [postgres@localhost ~]$ pg_controldata
    pg_control version number:            903
    Catalog version number:               201105231
    Database system identifier:           5741432812849707775
    Database cluster state:               shut down
    pg_control last modified:             Thu 10 Jan 2013 07:56:36 AM CST
    Latest checkpoint location:           2/38000020
    Prior checkpoint location:            2/34009190
    Latest checkpoint's REDO location:    2/38000020
    Latest checkpoint's TimeLineID:       4
    Latest checkpoint's NextXID:          0/1888
    Latest checkpoint's NextOID:          65595
    Latest checkpoint's NextMultiXactId:  1
    Latest checkpoint's NextMultiOffset:  0
    Latest checkpoint's oldestXID:        1792
    Latest checkpoint's oldestXID's DB:   1
    Latest checkpoint's oldestActiveXID:  0
    Time of latest checkpoint:            Thu 10 Jan 2013 07:56:35 AM CST
    .....
    注意这两个参数:
    Latest checkpoint's NextXID: 0/ 1888
    Latest checkpoint's NextOID: 65595

    四、重置,删除pg_xlog
    [postgres@localhost ~]$ pg_resetxlog -o 65595 -x1888 -f /database/pgdata/
    Transaction log reset
    五、再次查看,并重启
    [postgres@localhost pgdata]$ du -sh pg_xlog/
    193M    pg_xlog/
    
    [postgres@localhost pg_xlog]$ ll
    total 196620
    -rw-------. 1 postgres postgres      290 Nov 10 22:24 00000004000000010000003C.00000020.backup
    -rw-------. 1 postgres postgres 67108864 Jan 10 08:02 00000004000000020000000F
    -rw-------. 1 postgres postgres      113 Jun 17  2012 00000004.history
    drwxrwxr-x. 2 postgres postgres     4096 Jan 10 08:02 archive_status
    -rw-------. 1 postgres postgres 67108864 Nov 17 08:09 xlogtemp.1461
    -rw-------. 1 postgres postgres 67108864 Jan  3 09:35 xlogtemp.1518
    
    [postgres@localhost 12780]$ pg_start
    server starting
    [postgres@localhost 12780]$ psql
    Password: 
    psql (9.1.3)
    Type "help" for help.
    
    postgres=# \q

    已经被清理并正常启动了。以上测试是单机版环境,主备情况需要做好WAL日志的备份。

    另外使用这个操作可能会引起事务或数据的丢失,操作时应当慎重

    六、其他

    [postgres@localhost ~]$ pg_resetxlog --help
    

    pg_resetxlog resets the PostgreSQL transaction log

    Usage:   pg_resetxlog [OPTION]... DATADIR

    Options:   -e XIDEPOCH     set next transaction ID epoch   -f              force update to be done   -l TLI,FILE,SEG force minimum WAL starting location for new transaction log   -m XID          set next multitransaction ID   -n              no update, just show extracted control values (for testing)   -o OID          set next OID   -O OFFSET       set next multitransaction offset   -x XID          set next transaction ID   --help          show this help, then exit   --version       output version information, then exit

    Report bugs to <pgsql-bugs@postgresql.org>

    转载于:https://my.oschina.net/Kenyon/blog/101432

    展开全文
  • PG数据去重

    千次阅读 2019-07-21 13:37:34
    构造测试数据 CREATE TABLE basket( id SERIAL PRIMARY KEY, fruit VARCHAR(50) NOT NULL ); INSERT INTO basket(fruit) values('apple'); INSERT INTO basket(fruit) values('apple'); INSERT INTO basket(fruit...

    构造测试数据

    CREATE TABLE basket(
        id SERIAL PRIMARY KEY,
        fruit VARCHAR(50) NOT NULL
    );	
    INSERT INTO basket(fruit) values('apple');
    INSERT INTO basket(fruit) values('apple');
    INSERT INTO basket(fruit) values('orange');
    INSERT INTO basket(fruit) values('orange');
    INSERT INTO basket(fruit) values('orange');
    INSERT INTO basket(fruit) values('banana');
    
    

    去重

    • 方法1:使用 DELETE USING 语句删除重复的行
    DELETE
    FROM
        basket a
            USING basket b
    WHERE
        a.id < b.id
        AND a.fruit = b.fruit;
    
    • 方法2:使用子查询删除重复的行
    DELETE FROM basket
    WHERE id IN
        (SELECT id
        FROM 
            (SELECT id,
             ROW_NUMBER() OVER( PARTITION BY fruit
            ORDER BY  id ) AS row_num
            FROM basket ) t
            WHERE t.row_num > 1 );
    
    • 方法3: 使用ctid删除
     delete from basket where ctid not in (select min(ctid) from basket group by id);
    
    • 方法4: 使用ctid删除2
    delete  from basket a where a.ctid<>(select min(ctid) from basket b where a.fruit=b.fruit);
    

    视图去重

    如果是对于视图进行去重,由于视图没有ctid,所以无法通过ctid去重;
    可以使用方法1与2;

    删除没有主键与唯一键的表的重复记录

    • 数据
    drop table test;
    create table test(id int, name varchar, description varchar);
    
    insert into test values (1,'a','a');
    insert into test values (1,'a','b');
    insert into test values (1,'a','c');
    insert into test values (1,'a','c');
    
    
    insert into test values (2,'a','a');
    insert into test values (2,'a','b');
    insert into test values (2,'a','c');
    insert into test values (2,'a','c');
    
    
    select * from test;
    select DISTINCT * from test;
    
    
    • 函数
    CREATE OR REPLACE FUNCTION func_remove_duplicate_records(table_name varchar) 
    RETURNS INTEGER 
    AS
    $BODY$
    DECLARE
    	rec record;
    	column_list  varchar;
    	partition_by_columns varchar;
    	sql_text varchar;
    BEGIN
    
    	SELECT array_agg(attname)::varchar into column_list FROM pg_attribute WHERE attrelid = table_name::regclass and attname not in ('tableoid','cmax','cmin','xmin','xmax','ctid');
    	partition_by_columns = split_part(split_part(column_list,'{',2),'}',1);
        sql_text = format('delete from test 
     				where ctid = 
     				any(
     					array( 
     							select ctid from (
     							select row_number() over(partition by %1$s order by ctid) as rn, ctid from test
     							) t
     				 	where t.rn<>1
     					)
     				); 
     			  ',partition_by_columns);
       	execute sql_text;
        RETURN 0;
    END;
    $BODY$
    LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
    select * from test;
    
    • 实验:
    postgres=# select * from test;
     id | name | description 
    ----+------+-------------
      1 | a    | a
      1 | a    | b
      1 | a    | c
      1 | a    | c
      2 | a    | a
      2 | a    | b
      2 | a    | c
      2 | a    | c
    (8 rows)
    
    postgres=# select DISTINCT * from test;
     id | name | description 
    ----+------+-------------
      2 | a    | b
      1 | a    | b
      1 | a    | a
      1 | a    | c
      2 | a    | c
      2 | a    | a
    (6 rows)
    
    postgres=# 
    postgres=# select * from func_remove_duplicate_records('test');
     func_remove_duplicate_records 
    -------------------------------
                                 0
    (1 row)
    
    postgres=# select * from test;
     id | name | description 
    ----+------+-------------
      1 | a    | a
      1 | a    | b
      1 | a    | c
      2 | a    | a
      2 | a    | b
      2 | a    | c
    (6 rows)
    
    • 总结:通过上面的方法就可以在没有主键或者唯一键的情况下删除重复记录,如果有多张表,则可以配合shell脚本批量删除表中的重复记录

    参考:https://github.com/digoal/blog/blob/master/201706/20170602_01.md

    展开全文
  • pg数据类型及数据类型转换

    千次阅读 2019-09-17 16:16:33
    数字类型: ...当有存储 IP 地址需求的业务场 时,对于 PostgreSQL 并不很 悉的开发者可能会使用字符类型存储,实际上 PostgreSQL 提供用于存储 IPv4 1Pv6 MAC 网络地址的专有网络地址数据类型 ,使用网络...

    数字类型:

    在这里插入图片描述在这里插入图片描述在这里插入图片描述 在这里插入图片描述

    字符类型:

    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    时间 日期类型:

    在这里插入图片描述
    时间 日期数据 型支持的操 符有 、减、乘、除,下面举例说明:
    在这里插入图片描述
    时间/日期类型常用函数:
    在这里插入图片描述在这里插入图片描述

    布尔类型:

    在这里插入图片描述在这里插入图片描述

    网络地址类型:

    当有存储 IP 地址需求的业务场 时,对于 PostgreSQL 并不很 悉的开发者可能会使用字符类型存储,实际上 PostgreSQL 提供用于存储 IPv4 1Pv6 MAC 网络地址的专有网络地址数据类型 ,使用网络地址数据类型存 IP 地址 优于字符类型,因为网络地址类型一方面会对数 合法性进行检查 另一方面 提供了网络数据类型操作符和函数方便应用程序开发。网络地址类型列表:
    在这里插入图片描述
    cidr类型对IP 地址和子网掩码合法性进行检查, 而inet 不会 ,如下所示:
    在这里插入图片描述

    网络地址操作符:

    在这里插入图片描述在这里插入图片描述

    数组类型:

    PostgreSQL 支持一维数组和多维数组,常用的数组类型为数字类型数组和字符型数组,也支持枚举类型、复合类型数组。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    数组操作符:
    在这里插入图片描述
    数组函数:
    在这里插入图片描述在这里插入图片描述

    范围类型:

    范围类型包含一个范围内 数据,常见的范围数据类型有日期范围类型、整数范围类型等;范围类型提供丰富的操作符和函数,对于日期安排、价格范围应用场景比较适用。
    在这里插入图片描述在这里插入图片描述
    每一个范围类型都包含下界和上界,方括号“[”表示包含下界,圆括号“(”表示排除下界,方括号“]”表示包含上界 ,圆 号“)”表示排除上界 ,也就是说方括号表示边界点包含在内,圆括号表示边界点不包含在内,范围类型值的输入有以下几种模式:
    在这里插入图片描述
    范围类型操作符:
    在这里插入图片描述
    范围类型函数:
    在这里插入图片描述
    给范围类型创建索引:
    在这里插入图片描述

    json/jsonb 类型:

    PostgreSQL 不只是一个关系型数据库,同时它还支持非关系数据类型 json (JavaScript Object Notation), json 属于重量级的非常规数据类型,下面将介绍 json 类型、 json jsonb差异、 json与jsonb 操作符和函数,以及 jsonb 键值的追加、删除、更新。
    在这里插入图片描述
    查询 json 数据:
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    jsonb与json 操作符:
    在这里插入图片描述
    jsonb与json 操函数:
    在这里插入图片描述
    jsonb 键/值的追加、删除、更新:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    数据类型转换:

    前面几小节介绍了 PostgreSQL 常规数据类型和非常规数据类型,这一小节将介绍数据类型转换, PostgreSQL 数据类型转换主要有三种方式:通过格式化函数、 CAST函数、::操作符,下面分别介绍:
    通过格式化函数进行转换:
    在这里插入图片描述
    通过 CAST 函数进行转换:
    在这里插入图片描述
    在这里插入图片描述
    通过::操作符进行转换:
    在这里插入图片描述
    介绍了三种数据 型转换方法,第一种方法 容性相对较好,第三 方法用法简捷。

    展开全文
  • pg SQL删除模式

    2019-10-15 11:25:43
    pg SQL删除模式 使用navcat等工具直接删除模式的话,如果有序列或者下级的表等 就不能删除,使用以下语句可以直接进行删除 DROP SCHEMA "模式名称" CASCADE; ...
  • 启动pgAdmin 4 按图 到达第4步,打开表。 按图 到达第3步,点击SELECT 脚本 运行默认的语句,即可查看表中内容,也可进行编辑
  • ceph存储 PG数据恢复过程

    千次阅读 2016-06-03 15:44:07
    集群中的设备异常(异常OSD的添加删除操作),会导致PG的各个副本间出现数据的不一致现象,这时就需要进行数据的恢复,让所有的副本都达到一致的状态。想知道如何来进行数据的恢复之前,先要了解OSD故障的种类。   ...
  • pg数据库数据备份与恢复

    千次阅读 2019-02-28 10:16:53
    pg_dump -h 192.168.4.97 -p 5432 -U postgres -d gv_place -F t -f ./place.tar 存储文件到其他数据库 pg_restore -h 192.168.4.97 -p 5432 -U postgres -d teskkkk1 -v /home/iglobe/place.tar 进入到...
  • pg删除索引遇到的坑

    2019-12-26 15:22:23
    正常我们在删除索引的时候会报如下错误, 然后只需要设置索引路径就ok set search_path=bi_dpa;
  • PG删除列的恢复

    千次阅读 2016-07-26 10:22:44
    PG删除列后,只是做了一个标记,并没有真正回收空间 举例: hank=> select version();  version ------------------------------
  • 在数据库服务正常运行阶段,可能会出现数据量很小但是data目录很大的情况,这将导致做物理备份时占用过大的空间。下面将对此类情况的排查思路进行简单介绍。 1.排查data目录下的pg_wal目录占用大小。 在data目录下...
  • PG数据向Kingbase移植

    千次阅读 2017-02-13 19:34:34
    1.整理PG数据。--设备表 update my_dev_tab set description = 'dummy' where description is null or description = ''; --列字典表 update my_col_dict set col_name_chn = 'dummy' where col_name_
  • PG普通类型数据和Jsonb数据对比试验

    千次阅读 2016-01-15 10:58:58
    PG数据库JSonb类型数据测试1. 测试大纲1.1. 数据表写入速率对比测试。1.2. 数据表容量对比测试。1.3. 全表扫描查询性能对比测试。1.4. 索引扫描查询性能对比测试。2. 测试步骤使用定时记录数据对比测试两种表之间的...
  • pg数据库删除重复项

    2019-10-28 10:59:21
    ctid表示数据行在它所处的表内的物理位置,ctid字段的类型是tid。尽管ctid可以快速定位数据行,每次vacuum full之后,数据行在块内的物理位置就会移动,即ctid会发生变化,所以ctid不能作为长期的行标识符,应该使用...
  • 一、pg_dump的用法: 数据库的导入导出是最常用的功能之一,每种数据库都提供有这方面的工具,例如Oracle的exp/imp,Informix的dbexp/dbimp,MySQL的mysqldump,而PostgreSQL提供的对应工具为pg_dump和pg_restore。
  • 删除Pgadmin里servers下的系统,我们可以重新建立连接。 这时,我们将能获得新的系统数据表了。
  • # pg_dump --helppg_dump dumps a database as a text file or to other formats.Usage: pg_dump [OPTION]... [DBNAME] 数据库名放最后,不指定默认是系统变量PGDATABASE指定的数据库。General options:(一般选项)...
  • 2.11 删除逻辑复制槽 select pg_drop_logical_replication_slot('slot_for_test','test_decoding'); 三,安装tunnel 3.1 从git上下载源码并打包 git clone ...
  • PG数据库几种删除重复数据的方法在使用PG数据库的这段时间,总结了三种删除重复数据的方法,其中最容易想到的就是最常规的删除方法,但此方法性能较差,删数据耗时较久,虽容易实现,但性能太差,影响写数据的速率。...
  • Postgres批量删除数据

    千次阅读 2019-09-12 08:05:29
    当需要对一些不需要的历史数据进行大批量删除时, 在使用delete语句时,会发现在删除一些数据时会非常慢 比如 DELETE FROM test where id < 10000; 删除缓慢的原因主要在于外键约束,当数据库在有约束的情况下...
  • 在上一篇文章中,实现了查询重复数据删除多余重复数据的sql编写:http://blog.csdn.net/u011099093/article/details/78596034; 但是经过导入百万数据测试,查询语句直接卡住没有结果,于是又花了一天时间对sql...
  • 数据大挪移之ora2pg使用指南

    千次阅读 2018-12-06 16:03:44
    ora2pg通过自动扫描oracle数据库获取表结构以及数据,然后生成PostgreSQL数据库的SQL脚本或者直接在PostgreSQL上创建表并插入数据。而且它还支持视图、序列以及分区表,其功能非常强大。这里有一个120G左右的oracle ...
  • pg_dump
  • SQL Server中,删除表,删除表中数据

    万次阅读 2016-12-22 12:12:23
    SQL Server,我们现在基本上使用的最古老的版本应该是SQL...今天我们就来说说如何使用T-SQL脚本来删除表,以及删除表中的数据删除表和删除数据这是两回事!删除表表示不管表中有没有数据,将该数据库表彻底抹去
  • MYSQL数据删除数据,物理空间没释放

    千次阅读 2018-03-09 09:53:38
    当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小。这是因为删除操作后在数据文件中留下碎片所致。OPTIMIZE TABLE 是指对表进行优化。如果已经删除了表的一大部分数据,或者如果已经对含有可变...
  • 外键关联而无法删除数据

    千次阅读 2017-02-22 07:20:22
    经常我们在删除DB记录时,会为外键关联而无法删除数据感到苦恼。这里个人经常用到的一个方法就是,先让关联主键失效,然后再删除数据,数据删除完成后,再让其主 键生效,这样很好的解决了删除级联数据难的问题。 ...
  • 使用pgAdmin3上的查看数据的图标按钮不能编辑数据,不能添加和删除行,也不能修改行里的数据。 摸索半天,原因竟然是没有给表设置主键.... 所以给有问题的表建上主键就行了
  • 上面的语句在表test的记录比较多时,效率会比较差,这时可以使用下面更高效的语句删除重复的记录: highgo=# insert into test values (3); INSERT 0 1 highgo=# select * from test;  id | name  ----+...
  • Postgresql10数据库之删除数据

    千次阅读 2019-03-22 17:34:52
    2种方法都只删数据,保留表结构 方法一 ,适用数据量较小的...方法二,适合删除大量数据,速度快 TRUNCATE TABLE tablename; 若该表有外键,要用级联方式删所有关联的数据 TRUNCATE TABLE tablename CASCADE; ...
  • PG给某个字段增加/删除非空约束

    千次阅读 2020-08-11 17:36:45
    1. 删除非空约束 alter table xxx alter xxx drop not null; 2. 添加非空约束 alter table xxx alter xxx set not null;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,828
精华内容 8,331
关键字:

pg删除数据