begin; create table if not exists "parkaliases" ( "parkID" text, "alias" text, primary key("parkID","alias"), foreign key("parkID") references "parks"("park.key") ); -- split aliases by semicolon with recursive aliases(parkid, alias) as ( select "park.key", "park.alias" from parks union select parkid, trim(substr(alias, instr(alias, ";") + 1)) as a from aliases where a != '' ) insert into parkaliases select parkid, case instr(alias, ";") when 0 then alias else trim(substr(alias, 1, instr(alias, ";") - 1)) end as a from aliases where a != ''; alter table parks drop column "park.alias"; commit;