【问题标题】:Alter postgres table primary key UUID to Character Varying将 postgres 表主键 UUID 更改为 Character Varying
【发布时间】:2018-08-07 07:11:43
【问题描述】:

我想将我的 PostgreSQL 表主键 UUID 转换为字符变化

ALTER TABLE payment_authorization ALTER COLUMN id TYPE VARCHAR;

当我运行上面显示以下错误的命令时,因为外键约束失败。在我的系统中有 200 个表。有什么简单的方法可以更改所有表的主键?

【问题讨论】:

  • 也许转储/编辑/恢复会比很多 ALTER TABLE ... DROP CONSTRAINT 更容易。
  • 你能举个例子吗?
  • 我很难给你举个例子...我的意思是pg_dump -Fp数据库,使用你喜欢的文本编辑器将character varying替换为CREATE TABLE语句中的uuid,@ 987654327@ 然后加载编辑后的转储。
  • 您需要迁移所有 uuid 主键(+外键)还是只迁移一个(+外键)?
  • 我要迁移所有的uuid主键和外键

标签: postgresql


【解决方案1】:

更改所有表可能会很慢而且很麻烦。

最简单的解决方案可能是:

  • 导出数据库

    pg_dump -F p -f dumpfile.sql dbname
    
  • 使用编辑器将转储中的uuid 替换为text

    sed --in-place -e 's/uuid/text/g' dumpfile.sql
    
  • 删除并重新创建数据库:

    DROP DATABASE dbname;
    CREATE DATABASE dbname;
    
  • 导入转储:

    psql -U postgres -d dbname -1 -f dumpfile.sql
    

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 2021-08-14
    • 1970-01-01
    • 2018-10-29
    • 2012-07-03
    • 1970-01-01
    • 2013-01-29
    • 2021-09-09
    • 1970-01-01
    相关资源
    最近更新 更多