Ver Mensaje Individual
  #9 (permalink)  
Antiguo 20/08/2008, 14:33
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: migrar base de datos

Morón,
en primer lugar, te he propuesto una sintaxis para un orden apellido,nombre, cuando en realidad tienes un orden nombre,apellido, y pensando en que en cada campo había datos de un solo autor. Pero eso ahora no importa, pues creo que tu problema podría ser mayor.
¿cómo separas los campos de la base cuando exportas, pues si usas como separador el punto y coma o la coma, tendrás problemas, ya que me parece que esa separación de nombres mediante punto y coma se produce dentro de un campo.
A ver si he entendido: aquí el problema son, según me parece ahora, las relaciones entre dos tablas, pues sugieres la existencia de una tabla con la lista de autores, es decir, de nombres y apellidos (no estoy seguro de que exista y tal vez tienes que crearla), y que tendrá un id; y por otra parte otra tabla en la que se han almacenado, no los id de esa tabla con la lista de autores, sino los nombres en una cadena separada por puntos y coma, cuando lo lógico sería que existiese una tercera tabla con los id del id de esa tabla y el id de la tabla autores como FK. No sé si me explico. ¿Es ese el problema?, porque este tipo de almacenamiento con separación de punto y coma dentro de un campo, y con uso de cadenas de texto (los nombres) en lugar de números, no es muy adecuado.
Explícanos un poco más la estructura de lo que tienes y lo que quieres obtener...

EDITO para tratar de aclararte un poco más lo que te puse antes.
tabla1 (la que tienes y quieres exportar a MySQL o importar desde MySQL), id, campo1, nombre_apellido, campo2, etc.

Tú dices que tu objetivo es obtener una tabla llamada union con los datos de esos nombres, sin repetir. Eso puedes hacerlo de muchas maneras, una de ellas la que dices del array. También podrías exportar a texto y luego cambiar los puntos y coma en el tratamiento de texto por salto de párrafo; posteriormente importas desde la tabla de MySQL. No deben preocuparte las repeticiones, pues luego desde la tabla puedes eliminarlas haciendo una tercera tabla e insertando una selección agrupada por nombre_apellido. Todavía no sería el momento de separar nombres y apellidos. Esto nos daría la tabla donde los autores estarían con su id como clave primaria. Te quedarán los campos idunion, nombre_apellido. Si fuera sólo eso, sería fácil.

Pero me parece que te falta una tabla3, la tabla intermedia entre esta última y la primera, es decir, la tabla de conexión entre tabla1 y esta tabla union, la de la lista. Sería tal vez una tabla con los campos idtabla3, refidtabla1, nombre_apellido que contendría un registro de cada nombre (aquí sí podrá aparecer el mismo nombre_apellidos en varios registros y no tendríamos que eliminar los nombre_apellidos repetidos). Si fuera así, habría que hacer un INNER JOIN entre las tablas union y tabla3 para asignar el id de la tabla union como refidtabla1 (al final, estarían relacionadas las tablas por campos numéricos y no por cadenas de texto), pero todo eso habría que hacerlo más tarde. Y además, en ese caso, la solución del array que tú propones sería mejor, pues te permitiría añadir el id de la tabla1 junto a cada nombre en esa tabla3, algo que en el tratamiento de texto tendrías que hacer de manera manual o con un macro.

En cualquier caso, yo haría todo el trabajo después de haber exportado los campos tal y como los tienes a MySQL. Luego desde MySQL trabajaría para exportar a texto o trabajar con PHP mediante arrays, etc. Finalmente, una vez hecho todo y tras las comprobaciones necesarias, eliminaría los campos que ya no me sirvieran y usaría las sintaxis propuestas para separar nombres y apellidos en la tabla union. Esta es mi opinión, la de un no profesional.
Pero lo más importante es saber qué vas a hacer con esos datos. Como no sabemos cuál es la estructura de esa tabla, con qué intención se hizo, cómo se utilizaba, resulta difícil ver qué hacer. Lo que sabemos es cómo están almacenados los datos. Me explico:
si en la tabla uno tienes los nombres de productos comprados por esas personas, necesitarás tres tablas como te he dicho:
una con el producto y sus datos, otra con la lista de compradores y otra con los datos de cada compra...

Última edición por jurena; 21/08/2008 a las 02:46