PHP - Pasar DBF a MySQL desde Localhost

 
Vista:

Pasar DBF a MySQL desde Localhost

Publicado por Rafaelo (37 intervenciones) el 08/02/2007 17:45:36
HOLA:

El problema es el siguiente:
tengo una pagina php que pasa los registros de un DBF a una base MySQL. en localhost funciona de maravilla de la siguiente manera.
le paso la ruta del archivo y con la funcion dbase_open($ruta, 'r'); abre el archivo, lo lee registro por registro y los va insertando.
El problema es que al subirlo al server ya no funciona, no se abre la tabla, ya que la ruta que doy es c:\...\archivo.DBF.
No es la falta de la libreria dbase_php porque ya probe pasando la ruta ./ruta/archivo.dbf y asi si lo abre.
El problema en si es que la ruta que paso es de mi maquina.
¿como puedo subirla o abrir la tabla sin tener que copiarla al server remoto?

espero haberme explicado. y de antemano Muchas Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

RE:Pasar DBF a MySQL desde Localhost

Publicado por Yamil Bracho (888 intervenciones) el 08/02/2007 21:08:39
O la subes o que el servidor tenga acceso a tu equipo como carpeta compartida o usas FTP para enviar la dbf al servidor...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar DBF a MySQL desde Localhost

Publicado por Rafaelo (37 intervenciones) el 08/02/2007 23:43:02
ok, gracias por elcomentario.
tendre que hacerlo subiendo el archivo al servidor.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar DBF a MySQL desde Localhost

Publicado por José Carlos (1 intervención) el 09/04/2007 11:20:15
Aunque parece que no te interesa, desde luego lo más cómodo es enviar una copia de tu archivo dbf al servidor web.

Otra solución es hacer que tu archivo dbf sea accesible desde el servidor web. Para ello puedes establecer un servidor ftp o incluso http en tu máquina local.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar DBF a MySQL desde Localhost

Publicado por Rafaelo (37 intervenciones) el 11/04/2007 00:20:24
Hola Jose Carlos:

Gracias por atender mi pregunta. Pero ya he resuleto ese problema de la misma manera. Haciendo una copia de mi tabla dbf al server y trabajandola en el server mismo.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar DBF a MySQL desde Localhost

Publicado por sttull (1 intervención) el 18/04/2007 16:54:37
hola rafaelo

bueno yo lo k hise pase primero todas las dbf a mysql, o por lo menos eso intente por k las mas grandes no las he logrado convertir completas, y despues se las entrego a los terminales para k las usen.

USE cliente
COPY TO cliente.txt DELIMITED (Lo delimita con , "coma")
COPY TO cliente.txt DELIMITED WITH TAB (lo delimita con tabuladores)

Te crea el contenido del DBF a un archivo plano, luego utilizaría el comando LOAD DATA INFILE 'cliente.txt' INTO TABLE cliente FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n';

o este

<?

$basedbf="articulo.dbf";
$mifile = explode (".",$basedbf);

$based = $mifile[0];

printf($based);
printf("<br>");

$link = mysql_connect("localhost", "asanmiguel","clave");
mysql_select_db("test", $link);

if (($descriptor=dbase_open ($basedbf, 0))==0)
{
printf ("<br>Error al abrir la base de datos");
}
else
{
$num_registros = dbase_numrecords($descriptor);
$num_campos = dbase_numfields($descriptor);
$regcampos = dbase_get_header_info($descriptor);

$cadenasql = "create table " . $based . " ( ";
$titcampos = "";

for ($j=0;$j<$num_campos -1 ;$j++)
{
$cadenasql = $cadenasql . strtolower($regcampos[$j][name]);
$titcampos = $titcampos . trim(strtolower($regcampos[$j][name])) . ", ";
if ( strtolower($regcampos[$j][type])=="character" )
{
if ( Trim($regcampos[$j][length]) > "20" )
{ $cadenasql = $cadenasql . " varchar(" . $regcampos[$j][length] . "),"; }
else { $cadenasql = $cadenasql . " char(" . $regcampos[$j][length] . "),";}
}
if ( strtolower(trim($regcampos[$j][type]))=="date" )
{
$cadenasql = $cadenasql . " datetime,";
}
if ( strtolower(trim($regcampos[$j][type]))=="number" )
{
if ( Trim($regcampos[$j][precision])=="0")
{ $cadenasql = $cadenasql . " Integer(" . $regcampos[$j][length] . "),";}
else {$cadenasql = $cadenasql . " decimal (" . $regcampos[$j][length] . ",".$regcampos[$j][precision]."),";}
}
}
$cadenasql = $cadenasql . strtolower($regcampos[$j][name]);
$titcampos = $titcampos . trim(strtolower($regcampos[$j][name]));

if ( strtolower($regcampos[$j][type])=="character" )
{
if ( Trim($regcampos[$j][length]) > "20" )
{ $cadenasql = $cadenasql . " varchar(" . $regcampos[$j][length] . ") )"; }
else { $cadenasql = $cadenasql . " char(" . $regcampos[$j][length] . ") )";}
}
if ( strtolower(trim($regcampos[$j][type]))=="date" )
{
$cadenasql = $cadenasql . " datetime ) )";
}
if ( strtolower(trim($regcampos[$j][type]))=="number" )
{
if ( Trim($regcampos[$j][precision])=="0")
{ $cadenasql = $cadenasql . " Integer(" . $regcampos[$j][length] . ") )";}
else {$cadenasql = $cadenasql . " decimal (" . $regcampos[$j][length] . ",".$regcampos[$j][precision].") )";}
}

/* Creando la Tabla */

/* $result = mysql_query($cadenasql, $link); */

/* Insertando los Registros */

/* for ($i=1;$i<=$num_registros;$i++) */
for ($i=1;$i<=50 ;$i++)
{
$cadenadatos = "" ;
$registro= dbase_get_record ($descriptor, $i);
for ($j=0;$j<$num_campos - 1;$j++)
{
if ( strtolower(trim($regcampos[$j][type]))=="date" )
{
$cadenadatos = $cadenadatos . "'" . (trim($registro[$j])=="" ? "\n" : trim($registro[$j])) . "',";
}
if ( strtolower(trim($regcampos[$j][type]))=="character" )
{
$cadenadatos = $cadenadatos . "'" . (trim($registro[$j])=="" ? "\n" : trim($registro[$j])) . "',";
}
if ( strtolower(trim($regcampos[$j][type]))=="number" )
{
$cadenadatos = $cadenadatos . (trim($registro[$j])=="" ? "\n" : trim($registro[$j])) . ",";
}

}
if ( strtolower(trim($regcampos[$j][type]))=="date" )
{
$cadenadatos = $cadenadatos . "'" . (trim($registro[$j])=="" ? "\n" : trim($registro[$j])) . "'";
}
if ( strtolower(trim($regcampos[$j][type]))=="character" )
{
$cadenadatos = $cadenadatos . "'" . (trim($registro[$j])=="" ? "\n" : trim($registro[$j])) . "'";
}
if ( strtolower(trim($regcampos[$j][type]))=="number" )
{
$cadenadatos = $cadenadatos . (trim($registro[$j])=="" ? "\n" : trim($registro[$j])) . "";
}

$cadenasql = "Insert into " . $based . " (" . $titcampos . ") Values (" . $cadenadatos . ")";
printf($cadenasql);
$result = mysql_query($cadenasql, $link) or die ("Invalid query");
printf("<br>");
}

dbase_close($descriptor);
printf ("<br>Base de datos cerrada");
}
mysql_close( $link);

?>

tu k programa usaste?

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar DBF a MySQL desde Localhost

Publicado por Rafaelo (37 intervenciones) el 18/04/2007 23:34:43
Hola Sttulls:

como dicen por ahi hay muchas formas de matar pulgas...

yo lo que hice fue copiar el dbf de mi maquina al servidor / host, con el siguiente script y uso tambien un formulario con el boton de examinar ficheros INPUT TYPE="FILE"

------------------ UPLOAD.PHP------------------

<?

if(!isset($cargar)){

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>:: Formulario de carga de ficheros ::</TITLE>
<style type="text/css">
<!--
.Estilo1 { font-family: Verdana, Arial, Helvetica, sans-serif;
font-weight: bold;
}
.Estilo2 {font-family: Verdana, Arial, Helvetica, sans-serif}
-->

</style>
<LINK REL=StyleSheet HREF="estilos.css" TYPE="text/css" MEDIA=screen>

</HEAD>

<BODY >

<FORM NAME="elForm" METHOD="POST"
ACTION="<? echo $PHP_SELF; ?>?cargar=1"
ENCTYPE="multipart/form-data">

<h3 align="center" class="Estilo1">MODULO DE CARGA DE DATOS</h3>
<h5><span class="Estilo2">Para cargar los datos tiene que seleccionar el archivo DBF a exportar y luego hacer click e "Cargar la Información" . </span></h5>
<p> </p>
<TABLE WIDTH="80%" STYLE="font-family:Arial;font-size:9pt;">

<TR>
<TD ALIGN="LEFT"><INPUT TYPE="FILE" NAME="elFichero"></INPUT></TD>
</TR>

<TR>
<TD ALIGN="LEFT"><INPUT TYPE="SUBMIT" VALUE="Subir el fichero">
</TR>

</TABLE>

</FORM></BODY></HTML>

<?

}

#Aquí realizamos la carga del fichero
if(isset($cargar)){

#Le damos al fichero un nuevo nombre
$nuevositio = "./tmp/casos.dbf"; // ARCHIVO casos.dbf SE REESCRIBE CADA VEZ

#Lo copiamos
if(!copy($elFichero,$nuevositio)){
echo "NO SE HA PODIDO SUBIR EL FICHERO";
}
else{
echo "FICHERO SUBIDO CON ÉXITO";
include "dbase.php";
}

}

?>

-------------------------------------------------------------------------
Y como ves si se copio correctamente el archvo llamo al script dbase.php

---------------------- DBASE.PHP---------------------------------------------
<?php
include "conexion.php";
// abrir en modo solo lectura

//$ruta=$HTTP_POST_VARS['Ruta'];
//$ruta=strtoupper($ruta);

$ruta="./tmp/casos.dbf";
$db = dbase_open($ruta, 'r');

if ($db)
{
$numero_registros = dbase_numrecords($db);
// procesar cada uno de los registros
//$numero_registros = dbase_numrecords($db);
for ($i = 1; $i <= $numero_registros; $i++)
{
$row = dbase_get_record_with_names($db, $i);
// asignar cada variable del arreglo row a una individual;
$CASEID=$row['CASEID']; $ORDERDATE=$row['ORDERDATE']; $PACIENTE=$row['PACIENTE']; $DOCTOR=$row['DOCTOR']; $DUEDATE=$row['DUEDATE']; $DELIVER=$row['DELIVER']; $COURIER=$row['COURIER'];

$sSQL="insert into cases (CaseID, OrderDate, Patient, Doctor, DueDate, Memo, idstat,Deliver,courier) values ('$CASEID','$ORDERDATE','$PACIENTE','$DOCTOR','$DUEDATE','','1','$DELIVER','$COURIER')";

$result=mysql_db_query("db180088080",$sSQL,$conexion);
}
echo "DATOS CARGADOS...";
include "menu.php";

}
else
{
echo "no se abrio la tabla";
}
?>

------------------------------------------------------------------------------------
fijate que estoy usando las funciones de la libreria PHP_DBASE.DLL la cual tiene que estar cargada desde tu archivo de configuracion PHP.CONFIG en la lìnea:
extension=php_dbase.dll
no debe estar enc omentario.

creo que es mas sencillo y practico, menos pasos. Si te sirve.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hernan

RE:Pasar DBF a MySQL desde Localhost

Publicado por Hernan (1 intervención) el 07/06/2011 22:23:57
Mira probé el codigo pero los campos me los tira todos en blanco cuando quiero imprimirlos en pantalla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar DBF a MySQL desde Localhost

Publicado por Mary (1 intervención) el 31/07/2007 15:21:12
Usa algun servicio de DNS dinamico en la maquina donde estan los dbf que quieres. El servicio te dara un nombre de dominio virtual que sera el que coloques en tu archivo PHP para que use la IP y no un directorio!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar DBF a MySQL desde Localhost

Publicado por cristian (1 intervención) el 09/02/2009 18:50:45
Hola: Tengo el problema que cuando hago el dbase_open me tira el siguiente error: llamada indefinida a la funcion dbase_open.-

Espero que me puedan ayudar.
desde ya muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar DBF a MySQL desde Localhost

Publicado por Ing. Ederick Colmenares (1 intervención) el 06/05/2009 02:25:42
El problema que tienes es que debes hacer lo siguiente:

Para habilitar la librería dbase incluida y para poder utilizar estas funciones, se debe compilar PHP con la opción --enable-dbase

Referencia: http://de3.php.net/manual/es/dbase.installation.php

Y aqui tienes un script que ya he probado y funciona perfecto, solo debes hacer unos pequeños cambios que a continuacion te los digo:

Script: http://php4it.com/a-5.html

Copia y Pega el Script y solo reemplaza los datos de conexion a MySQL por estos:

$dbf_files = array('dbf/EDIF.dbf' => 'edif'); //edif es la table que ya estaria creada en la base de datos

$db_uname = 'tu_usuario';
$db_passwd = 'tu_clave';
$db = 'condominio'; //base de datos de nombre condominio previamente creada
$conn = mysql_connect('localhost', $db_uname, $db_passwd);

//ESO ES TODO. SUERTE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar DBF a MySQL desde Localhost

Publicado por gabriel alcala (1 intervención) el 07/07/2017 02:27:40
beun dia experto mis saludos necesito tendra el scrip completo para pasar un dbf a localhost
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar