pg 数据库不支持改变列顺序难受的要命! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kongkongye
V2EX    PostgreSQL

pg 数据库不支持改变列顺序难受的要命!

  •  
  •   kongkongye 2022-08-04 11:37:40 +08:00 5483 次点击
    这是一个创建于 1164 天前的主题,其中的信息可能已经有所发展或是发生改变。

    希望后续版本支持吧,有什么好的解决办法吗?

    37 条回复    2022-08-31 14:47:07 +08:00
    HashV2
        1
    HashV2  
       2022-08-04 11:44:12 +08:00
    什么场景需要改变列的顺序?
    smalljop
        2
    smalljop  
       2022-08-04 11:45:06 +08:00
    @HashV2 强迫症
    sun1991
        3
    sun1991  
       2022-08-04 11:45:43 +08:00
    问出这个问题, 恐怕是你对数据库理解不足吧?
    iseki
        4
    iseki  
       2022-08-04 11:55:30 +08:00
    确实,但是社区好像有帖子说因为没什么用就计划内不支持这个功能来着
    HashV2
        5
    HashV2  
       2022-08-04 11:57:22 +08:00   6
    @smalljop #2 我觉得你可以找找支持改变列展示顺序的客户端更靠谱
    MoYi123
        6
    MoYi123  
       2022-08-04 11:58:06 +08:00
    这个功能在客户端做不就好了? 像 idea 自带的就支持这个功能啊.
    liaohongxing
        7
    liaohongxing  
       2022-08-04 11:59:48 +08:00
    后续也不可能支持 ,它的顺序是硬编码 ,只能 select insert ,或 创视图
    me221
        8
    me221  
       2022-08-04 12:01:20 +08:00
    这种东西不是和客户端有关吗?
    sutra
        9
    sutra  
       2022-08-04 12:01:28 +08:00
    搞个临时的表过度一下数据,目标表重建。
    jack778
        10
    jack778  
       2022-08-04 12:05:17 +08:00
    是的,强迫症受不了,后面追加的列都是在最后面
    shinession
        11
    shinession  
       2022-08-04 12:29:51 +08:00
    这个确实逼死强迫症,pgadmin 里也没办法改显示的顺序,其他客户端可以
    uleh
        12
    uleh  
       2022-08-04 12:45:37 +08:00
    换个客户端就行了吧。。。实在不行查表的时候在 select 语句里手动指定一下 column
    wd
        13
    wd  
       2022-08-04 12:54:08 +08:00 via iPhone
    有顺序?
    wangsd
        14
    wangsd  
       2022-08-04 14:02:32 +08:00
    +1 ,之前用的 SQL Server 能改,上下拖动就行了,现在用 pg 就特不习惯,而且 GUI 也没微软的好用。
    Nostalgia
        15
    Nostalgia  
       2022-08-04 14:38:54 +08:00
    The idea of allowing re-ordering of column position is not one the postgresql developers are against, it is more a case where no one has stepped forward to do the work.
    Nostalgia
        16
    Nostalgia  
       2022-08-04 14:39:27 +08:00
    ecloud
        17
    ecloud  
       2022-08-04 14:44:12 +08:00
    改这玩意儿有什么用?公家的硬盘不心疼是吧
    ufan0
        18
    ufan0  
       2022-08-04 14:51:35 +08:00
    羡慕你们能用客户端的,我这边都是跳板机+低权账号,不能排序看着贼难受。
    defunct9
        19
    defunct9  
       2022-08-04 15:14:40 +08:00
    这是病,得治
    dorothyREN
        20
    dorothyREN  
       2022-08-04 15:43:27 +08:00
    select 的时候 你想什么顺序就什么顺序写字段不就行了
    NeroKamin
        21
    NeroKamin  
       2022-08-04 18:05:01 +08:00
    不太明白改变列顺序的需求是怎么来的?
    如果是为了展示的话,不是直接调换 select 的顺序就好了吗?
    如果是为了改变存储顺序的话,目的又是什么呢?为了优化?
    Aloento
        22
    Aloento  
       2022-08-04 18:35:39 +08:00
    强迫症需求一般没人会考虑...纯无效问题
    Radeon
        23
    Radeon  
       2022-08-04 18:58:49 +08:00
    自己 Remap 一个 View
    Jooooooooo
        24
    Jooooooooo  
       2022-08-04 19:00:13 +08:00
    pg 是开源的吧, 自己提 pr 吧.
    tairan2006
        25
    tairan2006  
       2022-08-04 20:01:00 +08:00
    mysql 也支持啊,笑死
    iseki
        26
    iseki  
       2022-08-04 22:00:14 +08:00
    @NeroKamin 有些工具不支持调顺序就有点疼

    个人经验是实在不行就临时开个视图~~~
    PopRain
        27
    PopRain  
       2022-08-04 23:29:42 +08:00
    @wangsd 你仔细看看 SQL Server 的执行过程,创建新表、拷贝数据、改名, 都是 Management studio 客户端做的,并不是数据库自身的功能。 之前好像有改字典表列顺序的方法,但是这个是奇技淫巧,不安全
    PopRain
        28
    PopRain  
       2022-08-04 23:30:59 +08:00
    改顺序是合理需求,新加的字段和有逻辑关系的放在一起,看起来舒服。。。。
    Kisesy
        29
    Kisesy  
       2022-08-04 23:41:57 +08:00
    我记得 sqlite 是复制一个表,然后重建的
    EminemW
        30
    EminemW  
       2022-08-05 00:44:26 +08:00
    这么离谱的需求,你 select 的时候按自己喜欢的顺序查不就好了
    UFc8704I4Bv63gy2
        31
    UFc8704I4Bv63gy2  
       2022-08-05 00:55:29 +08:00 via Android
    @Kisesy pg 也是复制然后重建
    seanzxx
        32
    seanzxx  
       2022-08-05 01:29:28 +08:00
    @ufan0 客户端就一般都支持跳板机呀
    cccer
        33
    cccer  
       2022-08-05 09:37:07 +08:00
    数据库列顺序会直接影响数据存放位置和格式(数据 4bit 对齐和合并),改列顺序只能删表重建。
    其他数据库只是后台做了这个事,PG 需要自己显式的写 SQL 。
    Huelse
        34
    Huelse  
       2022-08-05 10:17:58 +08:00
    我认为这是伪需求,不合理且浪费时间,改顺序仅仅是方便开发者看,而不是提高服务效率或增加功能性。

    而且 select 时就可以自行排序。
    kongkongye
        35
    kongkongye  
    OP
       2022-08-05 10:39:10 +08:00
    @Huelse 很多时候都直接打开表看下内容,如果字段顺序不重要,那假设每次打开表都给你随机排序,比如这次打开 100 个字段的表 id 跑后面去了,看着是不很乱,很影响心情与效率?
    815979670
        36
    815979670  
       2022-08-05 13:07:44 +08:00
    提到这个 sqlite 不支持字段备注也很难受
    lolizeppelin
        37
    lolizeppelin  
       2022-08-31 14:47:07 +08:00
    改变列顺序,要改整个表的数据存放, 统计数据也要重建

    话说 mysql 怎么实现的?对外做了映射?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2598 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 14:48 PVG 22:48 LAX 07:48 JFK 10:48
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86