You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redshift Update语句从保留关键字timestamp列取值赋值问题咨询

Redshift保留字列名UPDATE操作解决方案
  • 首先明确引号的作用边界:Redshift中双引号用于包裹表、列等标识符,单引号用于包裹字符串常量,你之前加引号后被识别为字符串大概率是误用了单引号。
  • 引用保留字作为列名时,双引号内的列名大小写必须和建表时定义的列名完全一致,大小写不匹配也会导致引用失败。
  • 原列是varchar类型,转成timestamp类型需要显式做类型转换,避免隐式转换报错,同时注意UPDATE后直接跟实际表名,不要写table关键字,正确的语句如下:
-- 替换为实际的表名
UPDATE 你的实际表名
SET timestamp_dt = "timestamp"::timestamp without time zone;
  • 执行前可先运行测试语句验证列名引用是否正确:
-- 替换为实际的表名
SELECT "timestamp" FROM 你的实际表名 LIMIT 10;

如果查询能正常返回原列数据,说明列名引用正确,再执行UPDATE操作即可。

  • 大表优化建议:由于Redshift的存储机制特性,全量UPDATE大表会产生大量IO、长时间锁表,建议优先选择建表替换的方式完成字段转换,效率更高:
-- 替换为实际的新表名、原表名,补全所有需要保留的字段
CREATE TABLE 新表名 AS
SELECT 
    其余需要保留的字段,
    "timestamp"::timestamp without time zone AS timestamp_dt
FROM 原表名;

-- 验证新表数据无误后,执行重命名操作
ALTER TABLE 原表名 RENAME TO 原表名_bak;
ALTER TABLE 新表名 RENAME TO 原表名;

内容的提问来源于stack exchange,提问作者Irshad Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:06:07