在 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,
. . .
我要改造下面的栏目
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,
. . .