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

Redshift表列名自动转小写问题:如何保留原始大小写

解决Redshift表列名无法保留原始大小写的问题

这问题我之前帮团队里的小伙伴踩过坑!Redshift默认的标识符处理规则确实会让没加引号的列名自动转成小写,要保留原始驼峰或混合大小写,得用双引号来约束。

问题根源

Redshift遵循PostgreSQL的标识符规范:当你创建表时,如果列名没有用双引号包裹,系统会自动把它转为小写存储。这就是为什么你定义的userName变成了username,userLastName变成了userlastname。

解决方案

1. 创建表时给列名加双引号

在定义列名的时候,用英文双引号把需要保留大小写的列名括起来,这样Redshift就会严格保留原始的大小写格式。示例SQL:

CREATE TABLE test_users (
    user_id INT,  -- 这个列名是小写,不需要引号也没问题
    "userName" VARCHAR(50),
    "userLastName" VARCHAR(50)
);

2. 查询时同样要用双引号引用列名

后续查询这些列的时候,必须同样用双引号包裹,否则Redshift会自动把你写的列名转成小写,导致找不到对应的列。示例查询SQL:

SELECT user_id, "userName", "userLastName" FROM test_users;

注意事项

  • 双引号必须是英文半角的,中文引号会直接报错。
  • 一旦使用了带引号的列名,所有涉及该列的操作(查询、更新、JOIN关联等)都必须保持双引号引用,否则会出现column does not exist的错误。
  • 如果需要保留表名的原始大小写,同样可以给表名加双引号,比如CREATE TABLE "Test_Users" (...),但一般不建议这么做,容易增加后续操作的混淆成本。
  • Redshift的带引号标识符最大长度为128个字符,定义列名时要注意不要超出这个限制。

内容的提问来源于stack exchange,提问作者Pankaj Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:44:42