Elevita
Usuario Novato
Usuario Novato

Buenos días:
A ver si alguien me pudiera ayudar,llevo días buscando código para poder hacer la conversión de DBF a MySql y no encuentro nada,sólo programas que si que hacen lo que quiero, pero necesito el código para hacer unas modificaciones,seleccionando varias tablas y ponerlas dentro de una bdd dentro de la carperta Mysql del AppServ.
No sé si será mucho pedir,pero si alguien me pudiera ayudar estaría muy agradecida. Bueno gracias por adelantado!!

marianinn
Usuario Novato
Usuario Novato

Hola Elevita.

A ver si te puedo ayudar.
No se con que lenguaje estas intentando transformar de dbf a mysql.
Yo he encontrado un programa (y su codigo fuente c++), que convierte esto. se llama dbf2mysql y es la version 1.14. Si no puedes encontrarlo dimelo y te lo mando.
Puedes utilizarlo para crearte un programa a tu medida.

Tambien he encontrado las especificaciones de xBase (formato de las tablas dbf) y con eso si te es viable, hacerte tu propio programa. Espero haberte ayudado.

http://www.clicketyclick.dk/databases/xbase/format/

Miguel ([email protected])

asanmiguelv
Usuario Novato
Usuario Novato

Hola soy nuevo en php, y estoy tratando de resolver este problema pero me sale que no ejecuta mi insert, cuando el insert lo hago directo sobre el MySql Query Browser funciona, favor de revisar el script y si pueden ayudarme les agradeceria.

<?

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

$based = $mifile[0];

printf($based);
printf("<br>&quotGiño;

$link = mysql_connect("localhost", "asanmiguel","&quotGiño;
mysql_select_db("test", $link);


if (($descriptor=dbase_open ($basedbf, 0))==0)
{
printf ("<br>Error al abrir la base de datos&quotGiño;
}
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] . &quotGiño,"; }
else { $cadenasql = $cadenasql . " char(" . $regcampos[$j][length] . &quotGiño,";}
}
if ( strtolower(trim($regcampos[$j][type]))=="date" )
{
$cadenasql = $cadenasql . " datetime,";
}
if ( strtolower(trim($regcampos[$j][type]))=="number" )
{
if ( Trim($regcampos[$j][precision])=="0&quotGiño
{ $cadenasql = $cadenasql . " Integer(" . $regcampos[$j][length] . &quotGiño,";}
else {$cadenasql = $cadenasql . " decimal (" . $regcampos[$j][length] . ",".$regcampos[$j][precision].&quotGiño,";}
}
}
$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] . &quotGiño )"; }
else { $cadenasql = $cadenasql . " char(" . $regcampos[$j][length] . &quotGiño )";}
}
if ( strtolower(trim($regcampos[$j][type]))=="date" )
{
$cadenasql = $cadenasql . " datetime ) )";
}
if ( strtolower(trim($regcampos[$j][type]))=="number" )
{
if ( Trim($regcampos[$j][precision])=="0&quotGiño
{ $cadenasql = $cadenasql . " Integer(" . $regcampos[$j][length] . &quotGiño )";}
else {$cadenasql = $cadenasql . " decimal (" . $regcampos[$j][length] . ",".$regcampos[$j][precision].&quotGiño )";}
}

/* 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 . &quotGiño Values (" . $cadenadatos . &quotGiño";
$cadenasql = strip_tags($cadenasql);
printf($cadenasql);
$result = mysql_query($cadenasql, $link) or die ("Invalid query&quotGiño;
printf("<br>&quotGiño;
}

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

?>

Avatar Image
@man / @woman
@man / @woman
Escrito originalmente por asanmiguelv
Hola soy nuevo en php, y estoy tratando de resolver este problema pero me sale que no ejecuta mi insert, cuando el insert lo hago directo sobre el MySql Query Browser funciona, favor de revisar el script y si pueden ayudarme les agradeceria.



Primero... no tenías que haber puesto tu pregunta en otro tema. Y después ¿en que te falla?... pedir que se mire todo un script para detectar un problema es un poco injusto y duro... es más sencillo decir donde falla y mostrar parte de ese código.
asanmiguelv
Usuario Novato
Usuario Novato

Lo siente si envie todo el script, pero es la unica manera de poder saber donde fallaba, pero no te preocupes si te molesto disculpa, el error fue mio ya que me olvide de ponerle la clave a mi coneccion,

$link = mysql_connect("localhost", "usuario","clave&quotGiño;
mysql_select_db("test", $link);


Estoy empezando a revisar php, pero no soy nuevo en este mundo de la informatica y en otras ocasiones he dado mas de una respuesta a cualquier inquietud en otros lenguajes, es solo cuestion de buena voluntad

Gracias

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 16/May/2008, 21:43
yenity03kMay/08