You need to enable JavaScript to run this app. 如何通过knex迁移修改PostgreSQL数据库表的列数据类型
优惠活动
大模型
产品
解决方案
定价
更多

如何通过knex迁移修改PostgreSQL数据库表的列数据类型

PostgreSQL INTEGER类型列转JSONB类型操作步骤
  • 操作前先备份目标表数据,避免转换错误导致数据丢失,备份命令如下:
    CREATE TABLE 你的表名_bak AS SELECT * FROM 你的表名;

  • 执行类型修改语句,由于PostgreSQL无INTEGER到JSONB的默认隐式转换,需要通过USING子句指定转换规则:

    • 若需将原有整数值直接作为JSONB数值类型存储,执行以下命令:
      ALTER TABLE 你的表名 ALTER COLUMN 你的列名 TYPE JSONB USING to_jsonb(你的列名);
    • 若需将原有整数值转为JSONB字符串类型存储(即原有数值123转为"123"),执行以下命令:
      ALTER TABLE 你的表名 ALTER COLUMN 你的列名 TYPE JSONB USING to_jsonb(你的列名::TEXT);
  • 转换完成后可执行以下命令验证类型是否修改成功:
    SELECT pg_typeof(你的列名) FROM 你的表名 LIMIT 1;

注意事项

  • 若表数据量较大,修改类型操作会持有表锁,建议在业务低峰期执行
  • 若目标列存在索引,类型修改后原有索引会失效,需重新创建适配JSONB类型的索引
  • 若目标列存在外键、特殊校验约束,需先删除对应约束后再修改类型,后续按需重新添加约束

内容的提问来源于stack exchange,提问作者Manish Rana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 18:21:03