Procedimiento de MySQL para cargar datos de la tabla de etapas a otras tablas. Necesidad de dividir el campo de valores múltiples en el proceso

Estoy tratando de exportar datos de una base de datos de valores múltiples (Unidata) a MySQL. Digamos que mis datos de origen fueron el número de identificación de una persona, su nombre y todos los estados en los que han vivido. El campo de estados es un campo de valores múltiples y los estoy exportando para que los diferentes valores dentro de ese campo estén separados por un ~. Un extracto de muestra se ve así:

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

He cargado estos datos en una tabla de etapas

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

Lo que quiero hacer es dividir estos datos en dos tablas mediante un procedimiento: una tabla de personas y una tabla de estados. Una persona puede tener muchas entradas en la tabla de estados:

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

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

Mi procedimiento toma los datos de la tabla de etapas y los vuelca a la tabla 1 muy bien. Sin embargo, estoy un poco perdido sobre cómo dividir los datos y enviarlos a la tabla 2. Sally necesitaría tener tres entradas en la tabla de estados (NY, NJ, CT), Dave tendría 3, Fred tendría 2 y Sue tendría 1 (OR). ¿Alguna idea sobre cómo lograr esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta