V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kongkongye
V2EX  ›  PostgreSQL

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

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

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

    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 的时候按自己喜欢的顺序查不就好了
    weiqk
        31
    weiqk  
       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   ·   我们的愿景   ·   实用小工具   ·   5333 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 09:17 · PVG 17:17 · LAX 02:17 · JFK 05:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.