Redshift导入S3 CSV时日期时间格式月份重复指定报错咨询
关于Redshift导入CSV时日期格式报错的原因
嘿,这个问题我之前碰到过好多次,核心原因就是你搞混了Redshift日期时间格式里月份和分钟的占位符规则:
- Redshift里,
mm是专门用来表示两位数字的月份的(比如01=1月,12=12月) - 而要表示分钟的话,正确的占位符是
mi,绝对不能用mm
举个实际的错误例子,如果你在COPY命令里写了这样的时间格式:
COPY your_target_table FROM 's3://your-bucket/path/to/data.csv' IAM_ROLE 'arn:aws:iam::123456789012:role/your-redshift-access-role' FORMAT CSV TIMEFORMAT 'mm/dd/yyyy hh:mm:ss';
这里就会直接触发你遇到的报错——前一个mm已经被用来定义月份了,后面的mm又被你拿来表示分钟,Redshift会认为你重复指定了月份的格式规则,自然就抛出错误了。
正确的写法应该把分钟部分的mm改成mi:
TIMEFORMAT 'mm/dd/yyyy hh:mi:ss';
还有一种少见但也可能出现的情况:你不小心在格式字符串里重复写了mm,比如误写成mm/mm/yyyy,这种明显重复指定月份的写法也会触发同样的错误。
总的来说,就是Redshift的日期时间格式规则里,mm的作用是唯一的——只对应月份,不能用来指代其他时间单位,一旦违反这个规则,就会出现你遇到的“月份重复指定”报错。
内容的提问来源于stack exchange,提问作者bachr
相关产品推荐
相关产品推荐

