在 Redshift 中用逗号分隔符拆分字符串

Split string by comma delimiter in Redshift

我要改造下面的栏目

select config_json from table 

   {"required_capacity": true, "cancelation_time_minutes": 0, "display_no_preference_in_booking": true}
{"feedback": true, "required_capacity": true, "setup_wizard_completed": false, "cancelation_time_minutes": 0, "display_no_preference_in_booking": true}
{"required_capacity": false, "cancelation_time_minutes": 0, "display_no_preference_in_booking": true}
{"required_capacity": true, "setup_wizard_completed": true, "cancelation_time_minutes": 0, "display_no_preference_in_booking": true}
{"feedback": true, "required_capacity": true, "setup_wizard_completed": false, "cancelation_time_minutes": 0, "display_no_preference_in_booking": true}

转换成这样的 table 格式:

required_capacity     cancelation_time_minutes       display_no_preference_in_booking  ...
true                              0                         true                       ...
true                              0                         true                       ...
false                             0                         true                       ...

至此,我先把列中的{}符号去掉,打算用','分隔列。

SELECT string_to_array(config_json, ',') as abcd
FROM  (select config_json, regexp_replace(config_json, '[{} ]','') as no_curly_bracket --remove the {} sign 
        from table ) a

错误消息说:

 Invalid operation: Specified types or functions (one per INFO message) not supported on Redshift tables.;

Redshift 不支持数组或 table 值函数。您可以分别提取每一列:

select regexp_substr(config_json, '"required_capacity": ([^,]+)', 1, 1, 'e') as required_capacity,
       regexp_substr(config_json, '"cancelation_time_minutes": ([^,]+)', 1, 1, 'e') as cancelation_time_minutes,
       . . .