Foros del Web » Programando para Internet » PHP »

Pasar datos binarios a MySQL!

Estas en el tema de Pasar datos binarios a MySQL! en el foro de PHP en Foros del Web. Ni idea si se puede hacer lo siguiente! Asi que toda ayuda sera bienvenida. Resulta que tengo un monton de ficheros con datos binarios. Estos ...
  #1 (permalink)  
Antiguo 19/11/2003, 10:16
Avatar de jesusma  
Fecha de Ingreso: junio-2003
Ubicación: Sevilla (Spain)
Mensajes: 38
Antigüedad: 20 años, 10 meses
Puntos: 0
Pasar datos binarios a MySQL!

Ni idea si se puede hacer lo siguiente! Asi que toda ayuda sera bienvenida.

Resulta que tengo un monton de ficheros con datos binarios.
Estos datos son sacados de una aplicacion hecha en C, que los ordena y los estructura adecuadamente de forma que los datos son tratados despues de forma grafica en la aplicacion.

Ahora viene el problema : Se quiere llevar una parte de esto a la Web, de forma que a partir de los ficheros se pasen a una base de datos MySQL y despues tratar con estos datos.

Necesito hacer una aplicacion PHP que pase los datos binarios a un base de datos de MySQL.

Alguna sugerencia??

Ahi queda eso!!! Gracias por vuestro tiempo.

Saludos.
__________________
La mejor improvisación es la que se prepara.
  #2 (permalink)  
Antiguo 19/11/2003, 11:36
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 21 años, 5 meses
Puntos: 2
Hay un articulo de cluster mira para ver si te es util, ya que es muy interesante

pincha Aqui

saludos
  #3 (permalink)  
Antiguo 19/11/2003, 11:47
Avatar de jesusma  
Fecha de Ingreso: junio-2003
Ubicación: Sevilla (Spain)
Mensajes: 38
Antigüedad: 20 años, 10 meses
Puntos: 0
Quizas no me haya explicado bien!! Pero gracias por la respuesta.

El hecho es que tengo que 'deshacer' el fichero y meter los datos
particulares que hay en el en la base de datos.
A ver ej:

El fichero contiene:
una estructura que contiene datos, fecha, etc.. pero en binario.

Yo tengo que sacar estos datos y meter por ejemplo:
los datos con una fecha determinada en una tabla para poder despues trabajar con esos datos.

me entendeis?? es como por asi decirlo, una traduccion del fichero binario a los datos que introducire en ASCII en MySQL.

A ver si ahora si. Venga nos vemos
__________________
La mejor improvisación es la que se prepara.
  #4 (permalink)  
Antiguo 19/11/2003, 12:26
Avatar de edwinandlozano  
Fecha de Ingreso: octubre-2003
Mensajes: 272
Antigüedad: 20 años, 6 meses
Puntos: 0
Hola jesusma, yo tengo un problema parecido (aunque todavia no he llegado a ese punto de desarrollo), la solucion que unos compañeros y yo hemos sacado, es que en Cdebes de convertir ese archivo a otro archivo entendible para luego insertarlo en la base de datos.....

Hay ya te toca como tu dices traducir un archivo, si existe alguna forma en php de hacer lo mismo en C, se los agradeceria que lo informara.......

Chao
  #5 (permalink)  
Antiguo 19/11/2003, 15:50
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

En binario, ya. Asi que lo que buscas es como hacer para leer un byte, un word, etc de un fichero. Bien, pues os comento como lo hago en una aplicacion que estoy desarrollando (mas bien es una clase mas que una aplicacion, y ando tras un hosting para finalizarla). Primero, lees todo el fichero en una variable:
Código PHP:
$this->contenido='';
$fp=fopen("fichero.bin",'rb'); // la b es para windows
$this->contenido=fread($fp,filesize("fichero.bin"));  // es necesario pasarle el tamaño del fichero para que no funcione el magic_quotes_runtime
fclose($fp); 
Ahora tienes que crear funciones para leer los tipos de datos. Le pasas como parametro la posicion del contenido donde empieza el dato:
Código PHP:
// UI8 =unsigned int de 8 bits
function getUI8($posicion) {
  return 
ord($this->contenido{$posicion}); // los {} para acceder a la cadena como si fuese un array
}

// UI16 =unsigned int de 16 bits
// asumiendo little endian 
function getUI16($posicion) {
  return 
ord($this->contenido{$posicion})|(ord($this->contenido{$posicion+1})<<8);  // si sabes C, sabes lo que significa
}

// UI32 =unsigned int de 32 bits
// asumiendo little endian 
function getUI32($posicion) {
  return 
ord($this->contenido{$posicion})|(ord($this->contenido{$posicion+1})<<8)|(ord($this->contenido{$posicion+2})<<16)|(ord($this->contenido{$posicion+3})<<24);  // si sabes C, sabes lo que significa
}

// string finalizado por \0
function getString($posicion) {
  
$cadena='';
  
$car=0;
  while (
0!=($car=$this->getUI8($posicion++))) {
            
$cadena .= chr($car);
        }
        return 
$cadena;

y asi con el resto de tipo de datos que tengas. Con esto habras leido los datos dell fichero binario. Y podras meterlos donde quieras.

Por si acaso, el $this es porque lo tengo hecho dentro de una clase.

Espero haber sido de ayuda.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 19/11/2003 a las 15:54
  #6 (permalink)  
Antiguo 20/11/2003, 02:45
Avatar de jesusma  
Fecha de Ingreso: junio-2003
Ubicación: Sevilla (Spain)
Mensajes: 38
Antigüedad: 20 años, 10 meses
Puntos: 0
No parece facil!!!

El caso es que el fichero utiliza listas enlazadas para contener los datos de diferentes horas a lo largo de una fecha.

Supongo que estas, tienen que tener una cabecera, por lo que habría que:

Comprobar la cabecera
Comparar con los datos.
Traducirlo a ASCII
meter los datos adecuadamente en la base de datos.

De todas formas tengo que preguntar si la aplicación es capaz de entregar los datos en ficheros .txt

Lo que si conozco es que el fichero de entrada a la aplicacion C es .txt, pero la aplicacion hace correcciones en estos datos y devuelve (aparte de otras cosas) un fichero .bin con los datos correctos.

Bueno, como esto va a ir para largo, ya os ire contando mis progresos.

Un saludo y gracias por vuestro tiempo.
__________________
La mejor improvisación es la que se prepara.
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 09:52.