【发布时间】:2018-11-16 22:15:58
【问题描述】:
我在名为“食物”的表中有一个名为“描述”的列,其中包含多个用 分隔的食物名称,例如鸡、汤、面包、可乐
如何从列中提取每个项目并创建多行。
例如目前它就像
{FoodID, FoodName, Description} ==> {123,膳食,“鸡肉、汤、面包、可乐”}
而我需要的是
{FoodID, FoodName, Description} ==> {123,餐,鸡},
{123,膳食,汤},
{123、膳食、面包}等。
在 Redshift 中,我首先将“描述”列拆分为
select FoodID, FoodName, Description,
SPLIT_PART(Description, ',',1) AS Item1,
SPLIT_PART(Description, ',',1) AS Item2,
SPLIT_PART(Description, ',',1) AS Item3,.....till Item10
FROM Food
考虑最多 10 个项目可以在那里,因此 Item10。 将这些列 Item1 转换为 Item10 以存储为行的最佳方法是什么?我尝试了 UNION ALL,但考虑到大量数据需要更长的时间。
【问题讨论】:
-
SPLIT_PART与联合似乎是一个可行的选择。真的,您甚至都不应该将此类未规范化的数据导入数据库。您可能不得不咬紧牙关,直到您可以正常化它。
标签: sql split multiple-columns amazon-redshift rows