将postgres表主键UUID更改为Character Varying

时间:2018-08-07 07:11:44

标签: postgresql

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

ALTER TABLE payment_authorization ALTER COLUMN id TYPE VARCHAR;

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

1 个答案:

答案 0 :(得分: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