Procedimento MySQL para carregar dados da tabela intermediária para outras tabelas. Necessidade de dividir o campo de valores múltiplos no processo

Estou tentando exportar dados de um banco de dados de vários valores (Unidata) para o MySQL. Digamos que meus dados de origem fossem o número de identificação de uma pessoa, seu primeiro nome e todos os estados em que viviam. O campo estados é um campo com vários valores e eu os estou exportando para que os diferentes valores nesse campo sejam separados por um ~. Um extrato de amostra é semelhante a:

"1234","Sally","NY~NJ~CT"
"1235","Dave","ME~MA~FL"
"3245","Fred","UT~CA"
"2344","Sue","OR"

Carreguei esses dados em uma tabela de preparação

Table:staging
Column 1: personId
Column 2: name
Column 3: states

O que eu quero fazer é dividir esses dados em duas tabelas usando um procedimento: uma tabela de pessoas e uma tabela de estados. Uma pessoa pode ter muitas entradas na tabela de estados:

Table 1: persons
Column 1: id
Column 2: name

Table 2: states
Column 1: personId
Column 2: state

Meu procedimento pega os dados da tabela de preparo e os despeja na tabela 1. No entanto, estou um pouco perdido em como dividir os dados e enviá-los para a tabela 2. Sally precisaria ter três entradas na tabela de estados (NY, NJ, CT), Dave teria 3, Fred teria 2 e Sue teria 1 (OR). Alguma idéia de como fazer isso?

questionAnswers(1)

yourAnswerToTheQuestion