Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

campo con muchos datos

Estas en el tema de campo con muchos datos en el foro de Mysql en Foros del Web. Hola buenas me disponia ha hacer una base de datos de coches y tengo un duda existencial. Cuando me pongo a crear la tabla Create ...
  #1 (permalink)  
Antiguo 16/02/2011, 10:20
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 17 años, 11 meses
Puntos: 1
campo con muchos datos

Hola buenas me disponia ha hacer una base de datos de coches y tengo un duda existencial.

Cuando me pongo a crear la tabla
Create table coches( marca varchar(20).....

Como hago para poner los modelos??
porque por ejemplo FORD tiene un monton...

ademas de esto tengo todos los modelos en un coches.txt el cual tenia intencion de importar a mySQl... entonces en este txt
tendria

FORD cougar ka fusion

con un espacio entre cada modelo como haria para leerlos?

gracias a todos!!!
  #2 (permalink)  
Antiguo 16/02/2011, 10:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: campo con muchos datos

Los modelos van en otra tabla, vinculados a la tabla de marcas por medio de FK.

Estudia el modelo Entidad - Relación y el diseño de Bases de Datos Relacionales...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/02/2011, 14:21
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: campo con muchos datos

vale gracias entiendo lo de entidad-relacion... me las apañare para ver llamar de un sitio a otro supongo que sera usando claves primarias, pero aqui en modo consolo mySQL no se muy bien.. de todas maneras gracias voy a calentarme el coco un poco que nunca viene mal

;)
  #4 (permalink)  
Antiguo 16/02/2011, 14:23
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: campo con muchos datos

una pregunta al poner los modelos en un txt y luego desde mySQL importarlos.... como hago para diferenciarlos?
me referiero pongo
los modelos separados por una tabulacion. o pongo marca y luego los modelos juntos es que no se muy bien como poner solo modelos....
  #5 (permalink)  
Antiguo 17/02/2011, 05:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: campo con muchos datos

Se puede cargar sin problemas un paquete de datos en formato CSV o simplemente texto plano (TXT) separado por comas o tabulaciones.
Yo te aconsejo por comas, es más simple de hacer, y en el caso que te ocupa debes usar el comando LOAD DATA, propio de MySQL. Pero para hacerlo en una web debes tener permisos de FILE como usuario. En esos casos los hosting te dan acceso a un phpMyAdmin en su servidor que te permite hacer esa tarea sin mayores problemas.
Fíjate qué recursos te provee el hosting y luego mira lo que puedes hacer con él (habitualmente todo hosting tiene manuales de usuario y tutoriales para orientarte, búscalos).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 18/02/2011 a las 05:02
  #6 (permalink)  
Antiguo 17/02/2011, 14:39
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: campo con muchos datos

Gracias...

No me ha quedado muy claro el como relacionar dos tablas.

si en una tabla tengo por ejemplo
Marca pais
Ford EEUU
SEAT españa
fiat italia
ferrari italia

este seria un ejemplo, luego en otra tabla modelos
seria
Marca Modelo
ford cougar, ka, fusion
seat ibiza, marbella

etc.... seria asi???? mi duda es como es que tu al escribir en el txt escribes en vertical y cada espacio de tabulacion es para cambiar de atributo, entonces como hago para poner los modelos??

Gracias

P.D.: espero haberme explicado bien
  #7 (permalink)  
Antiguo 18/02/2011, 05:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: campo con muchos datos

El camino más simple que tienes es:
1) Crea la tabla de modelos en Excel, puedes ponerle o no encabezados, pero si los pones, luego hay que darle ciertas condiciones al LOAD DATA.
2) Graba la tabla de Excel como archivo separado por comas (*.CSV)
3) Revisa el archivo generado con el Notepad, para verificar si en tu PC la separación se hizo por coma (,) o por puntos y coma (;). Eso cambia con la regionalización de tu PC.
4) La sentencia completa la puedes encontrar en este site: MySQL con Clase, pero la ida sería que fuese algo así:

Código MySQL:
Ver original
  1. LOAD DATA  INFILE 'ruta_al_archivo\\archivomodelos.csv'
  2.     INTO TABLE modelos
  3.     LINES TERMINATED BY '\n';
Si el archivo está en tu PC y el servidor es remoto, debes agregar LOCAL después de DATA. Eso le indica al sistema que no busque en la carpeta del servidor sino en la que le indiques tú:
Código MySQL:
Ver original
  1. LOAD DATA  LOCAL INFILE 'ruta_al_archivo\\archivomodelos.csv'
  2.     INTO TABLE modelos
  3.     LINES TERMINATED BY '\n';
Si la tabla cuenta con encabezados, debe eliminarse esa línea
Código MySQL:
Ver original
  1. LOAD DATA  LOCAL INFILE 'ruta_al_archivo\\archivomodelos.csv'
  2.     INTO TABLE modelos
  3.     LINES TERMINATED BY '\n'
  4.     IGNORE 1 LINES;
Si la en la tabla sólo se ingresarán ciertos campos, es decir que la tabla a cargar no tiene los mismos campos que la de destino, debe indicarse los campos a cargar de la tabla dstino:
Código MySQL:
Ver original
  1. LOAD DATA  LOCAL INFILE 'ruta_al_archivo\\archivomodelos.csv'
  2.     INTO TABLE modelos
  3.     LINES TERMINATED BY '\n'
  4.     (campo1, campo2, ....);

Finalmente, algunos detalles:
1) Algunos formatos de archivo en lugar de terminar las líneas con un salto de linea los terminan con retorno de carro. En ese caso la secuencia de escape es:
Código MySQL:
Ver original
  1. LOAD DATA  LOCAL INFILE 'ruta_al_archivo\\archivomodelos.csv'
  2.     INTO TABLE modelos
  3.     LINES TERMINATED BY '\r\n'
  4.     (campo1, campo2, ....);
2) Si la cadena que indica el archivo está en una carpeta específica, se debe indicar toda la ruta, pero los caracteres de escape (\) deben a su ves escaparse (\\). Por ejemplo:
Código MySQL:
Ver original
  1. LOAD DATA  LOCAL INFILE 'C:\\Carpeta de archivos cvs\\importaciones\\archivomodelos.csv'
  2.     INTO TABLE modelos
  3.     LINES TERMINATED BY '\r\n'
  4.     (campo1, campo2, ....);
Si no lo hacs, la cadena 'C:\Carpeta de archivos cvs\importaciones\archivomodelos.csv' será interpretada por MySQL como "'C:Carpeta de archivos cvsimportacionesarchivomodelos.csv'"
3) Si en lugar de separar los datos por comas decides separarlos por tabulaciones, la secuencia d escape del caracter es "\t":
Código MySQL:
Ver original
  1. LOAD DATA  LOCAL INFILE 'C:\\Carpeta de archivos cvs\\importaciones\\archivomodelos.csv'
  2.     INTO TABLE modelos
  3.     LINES TERMINATED BY '\r\n';
Finalmente, y muy importante:
4) Los hosting suelen proveerte de acceso administrativo por phpMyAdmin. Esta aplicación web puede manejar la importación de datos directamente a la tabla por archivos TXT o CSV. Aprovéchala.
5) Normalmente los hosting no te permiten usar conexiones remotas para acceder a las bases de datos, por cuestiones de seguridad. En ese caso, o usas la plicación que ellos te proveen para cargar los datos, o desarrollas una propia con PHP para hacerlo. Eso es lo que yo habitualmente hago. La ventaja de una aplicación propia es que es simple de codificar, y puedes mandar directamente las tablas como XML. Consulta en el Foro de PHP o busca un tutorial.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 22/02/2011, 14:01
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: campo con muchos datos

GRANDE!!!! eres un crack voy a probar que tal y ya te cuento..

Gracias!!!
  #9 (permalink)  
Antiguo 22/02/2011, 15:05
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: campo con muchos datos

Una cosa, si quisiera hacer una consulta sobre una base de datos que tiene "MARCAS DE COCHE" y "MODELOS DE LAS MARCAS"
tendria que tener dos campos
MARCA | MODELO y repetir el nombre de la marca por cada modelo no?
es decir, quedaria una cosa asi
SEAT | IBIZA
SEAT | MARBELLA
SEAT | TOLEDO
de esta manera si que podria hacer consultas y sacar por ejemplo, modelos de SEAT que empiezan por T
no?

Gracias
  #10 (permalink)  
Antiguo 22/02/2011, 16:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: campo con muchos datos

En eso consiste precisamente una tabla originada en una relación 1:N, con una salvedad: No necesitas necesariamente una tabla con ambos nombres. Lo que necesitas es una tabla 1:N que tendrá la PK de la primera como FK, que puede o no ser el nombre u otro valor que la industria use para identificar.
La tabla que te propones es la tabla resultado y esa se obtiene por medio de consultas. No necesitas que exista como tabla física.
¿Se entiende la idea.
Sería el caso de
Código MySQL:
Ver original
  1. SELECT T1.marca_nombre, T2.marca_modelo
  2. FROM marca T1 INNER JOIN modelo T2 ON T1.marca_id = T2.marca_id
  3. WHERE LEFT(T2.modelo_nombre,1) = 'T';
COmo puedes ver, no necesito una tabla adicional que contenga esa información. La obtengo de la consulta, recuperando las columnas que están en cada tabla.
Detalle: Estoy partiendo de la base que el campo marca_id es FK en la tabla "modelo" y que no es el nombre de la marca, sino un identificador industrial.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 24/02/2011, 15:36
Avatar de pampa_  
Fecha de Ingreso: mayo-2006
Mensajes: 334
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: campo con muchos datos

eyy muchas gracias por todo... pero joder es mas sencillo me he vuelto gilipollas...

Lo unico que tengo que hacer es ponerlo todo en una tabla
ID MARCA MODELO y ya esta!!!
y asi si quiero añadirle cosas como motor etc... lo puedo hacer tambien, no me hacen falta dos tablas.

Gracias porque he aprendido mucho.

Etiquetas: muchos, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:56.