我想将PostgreSQL表主键UUID转换为字符变化
ALTER TABLE payment_authorization ALTER COLUMN id TYPE VARCHAR;
运行上面显示以下错误的命令时,由于外键约束失败。在我的系统中有200张桌子。有什么简单的方法可以更改所有表的主键?
答案 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