Postgresql 将postgres表主键UUID更改为字符变量

Postgresql 将postgres表主键UUID更改为字符变量,postgresql,Postgresql,我想将我的PostgreSQL表主键UUID转换为字符 ALTER TABLE payment_authorization ALTER COLUMN id TYPE VARCHAR; 当我运行上面显示以下错误的命令时,Beacause外键约束失败。在我的系统中有200个表。有什么简单的方法可以更改所有表的主键吗?更改所有表可能会很慢且麻烦 最简单的解决方案可能是: 使用导出数据库 pg_dump-F p-F dumpfile.sql dbname 使用编辑器将转储中的uuid替换为text

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

ALTER TABLE payment_authorization ALTER COLUMN id TYPE VARCHAR;

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

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

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

  • 使用导出数据库

    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
    

也许转储/编辑/恢复比许多
更改表更容易。。。放弃约束
。你能给我举个例子吗。我几乎不能给你举个例子。。。我的意思是
pg_dump-Fp
在数据库中,在
CREATE TABLE
语句中,使用您最喜欢的文本编辑器将
uuid
替换为
character variabling
删除数据库
,然后加载编辑的转储。您需要迁移所有uuid主键(+外键)还是只迁移一个(+外键)?我想迁移所有uuid主键和外键