Podzielenie wartości kolumny na kilka kolumn

0

Witam,

Posiadam kolumnę 'skills' i są tam takie rekordy jak np:

['Rock Head', 'Lightningrod', 'Battle Armor', 'Cursed Body', 'Lightningrod', 'Rock Head']

Maksymalnie kolumna posiada 6 takich umiejętności, minimalnie 1. Chciałbym rozbić taką kolumnę na 6 innych (tyle ile maksymalna liczba atrybutów) - skills1, .... , skills6
Mógłby mi ktoś podpowiedzieć jak za pomocą sql lub pl/sql - jakiejś funkcji rozbić taki ciąg znaków?
Jeżeli dany rekord ma tylko jeden 'skill' to reszta kolumn wtedy powinna mieć NULL.

Baza danych to Oracle.

0

doraźnie to np. https://www.google.pl/search?q=oracle+split+string+into+columns
a tak bardziej pro to jak najszybciej zrobić to tak jak być powinno

0
abrakadaber napisał(a):

doraźnie to np. https://www.google.pl/search?q=oracle+split+string+into+columns
a tak bardziej pro to jak najszybciej zrobić to tak jak być powinno

Mógłbyś wyjaśnić ostatnie zdanie? Jak powinno być?

0

no na pewno nie jako ciąg poszczególnych pozycji oddzielonych przecinkiem a jako np. 6 osobnych kolumn (brzydko ale lepiej niż teraz) albo jako dodatkowa tabela z ref_id do bieżącej i z poszczególnymi "skilsami" jako osobne rekordy

0
abrakadaber napisał(a):

no na pewno nie jako ciąg poszczególnych pozycji oddzielonych przecinkiem a jako np. 6 osobnych kolumn (brzydko ale lepiej niż teraz) albo jako dodatkowa tabela z ref_id do bieżącej i z poszczególnymi "skilsami" jako osobne rekordy

Dzięki za odpowiedź.
Przykład jest z pojedynczej bazy w .csv z serwisu Kaggle, więc wiadomo że nie jest on jakoś specjalnie sformatowany. Wykorzystuje go głównie do stworzenia swojej małej hurtowni danych przy użyciu nowego frameworku.

0

Jak masz bazę w pliku csv to możesz sobie ją przygotować w Excelu jak tylko chcesz i dopiero po obrobieniu wrzucić do bazy.

0
KiK napisał(a):

Jak masz bazę w pliku csv to możesz sobie ją przygotować w Excelu jak tylko chcesz i dopiero po obrobieniu wrzucić do bazy.

Już sobie poradziłem. Użyłem: regexp_replace(p."abilities", '[|]|''','') as CLEAN_ABILITIES i później przykładowo: regexp_substr(c."CLEAN_ABILITIES", '[^,?]+', 1, 1) as abilities1

1 użytkowników online, w tym zalogowanych: 0, gości: 1