He buscado por la web y he encontradoesto que puede estar relacionado con mi duda pero como no entiendo vengo a preguntar.
Estoy tratando de insertar datos en tablas. Estoy usando sequelize v6 y mysql .
que tengo en mi base de datos
Tengo 2 mesas, estudiante y municipio.
tabla de estudiantes: id, name, email, township_id
tabla de municipio: id, name
Lo que tengo en mis asociaciones
modelo de estudiante
Student.belongsTo(models.Township, { foreignKey: "townshipId", as: "township", });modelo de municipio
Township.hasMany(models.Student, { foreignKey: "townshipId", as: "township", });Lo que tengo en req :
En mi solicitud, tengo datos como los siguientes:
{ name: 'john', email: 'john@gmail.com', township: 'Flank', }Pregunta
En realidad, estoy tratando de insertar datos csv de forma masiva en mi base de datos. Los usuarios finales completarán los datos en Excel con los datos anteriores (en el requisito) y los guardarán como un archivo csv y lo importarán al sistema. El problema es que el valor que obtengo al analizar csv es el nombre del municipio como text value , en este caso Flank . Pero necesito cambiarlo a un integer township_id para poder insertarlo en la tabla de students con ese township_id.
(Lo que he hecho: tomo el nombre del municipio en este caso Flank y ejecuto la consulta SELECT township_id FROM townships WHERE name = 'Flank' , y obtengo township_id de vuelta si Flank está allí en la tabla de municipios. Entonces, ahora puedo usar eso township_id en la inserción en la tabla de students . Pero creo que es muy costoso y otro hecho es que también tengo otros 50 campos como este).
Por lo tanto, mi pregunta es cómo puedo insertar ese township: 'Flank' en la tabla de students sin encontrar explícitamente township_id primero (evitando lo que he hecho).
Gracias.
El problema es que el valor que obtengo al analizar csv es el nombre del municipio como valor de texto, en este caso
Flank. Pero necesito cambiarlo a un enterotownship_idpara poder insertarlo en la tabla destudentscon esetownship_id.
Para esto, en lugar de
INSERT INTO students (name , township, ...) VALUES ('John' , 'Flank' , ...)debes usar
INSERT INTO students (name , township_id, ...) SELECT 'John' , township_id, ... FROM towns WHERE town_name = 'Flank'; PD. No sé cómo se realiza INSERT .. SELECT en la sintaxis de script/marco.