cómo importar y exportar bases de datos desde phpmyadmin

16
Cómo importar y exportar bases de datos desde phpMyAdmin Desde el phpMyAdmin podemos gestionar nuestras bases de datos, podemos añadir, eliminar o crear nuevo contenido. Dos de las operaciones más comunes al utilizar el phpMyAdmin es importar y exportar bases de datos. 1.- Exportar una base de datos Usamos esta opción cuando queremos migrar un alojamiento y tenemos que importar nuestra base de datos en el nuevo alojamiento o simplemente para guardarnos una copia de seguridad. Primero accedemos al phpMyAdmin con los datos de acceso .

Upload: rosalia

Post on 04-Dec-2015

237 views

Category:

Documents


4 download

TRANSCRIPT

Cómo importar y exportar bases de datos desde phpMyAdmin

Desde el phpMyAdmin podemos gestionar nuestras bases de datos, podemos añadir, eliminar o crear nuevo contenido.Dos de las operaciones más comunes al utilizar el phpMyAdmin es importar y exportar bases de datos.

 

1.- Exportar una base de datosUsamos esta opción cuando queremos migrar un alojamiento y tenemos que importar nuestra base de datos en el nuevo alojamiento o simplemente para guardarnos una copia de seguridad.

Primero accedemos al phpMyAdmin con los datos de acceso. 

 

Una vez dentro del phpMyAdmin, seleccionamos la base de datos que queremos exportar a un archivo. 

 

Al seleccionar la base de datos, clicamos en el enlace "Exportar".

 

Nos aparece una nueva ventana. 

 

Podemos realizar la exportación de modo "rápido" haciendo clic en "Continuar".

Podemos seleccionar "Personalizar" si no deseamos exportar todas las tablas, si queremos cambiar "Juego de caracteres del archivo" UTF-8, o seleccionar compresión, si queremos que el archivo que se genere ocupe menos

espacio. 

 

Una vez recibido el archivo ya tenemos la copia de la base de datos en nuestro disco, lista para Importar.

 

2.-Importar una base de datos

Para importar una base de datos necesitamos, primero, el archivo con los datos generado previamente. Si estamos migrando una base de datos de otro alojamiento a CDmon, debemos tener la copia de la base de datos en un archivo con extensión .sql, .zip, .tar.gz o .tgz en el disco duro de nuestro ordenador.

Si la base de datos a importar pesa más de 30 MB tenemos que realizar la importación a través del Panel de control de CDmon. Si la base de datos pesa menos de 30 MB podemos realizarlo desde el mismo phpMyAdmin.

 

Primero, escogemos la base de datos a la que queremos importar. Podemos crearla a través del Panel de control de CDmon.

Una vez dentro del phpmyadmin, seleccionamos la base de datos que hemos creado a la cual deseamos importar nuestro

archivo. 

Seleccionada la base de datos hacemos clic en el enlace "Importar".  

 

Nos muestra la ventana donde nos permite examinar en nuestro disco duro el archivo de la base de datos. Clicamos en "Examinar", seleccionamos el archivo y aceptamos.

En la selección de "Juego de caracteres" tenemos que seleccionar la misma opción que escogimos cuando exportamos la base de datos. Habitualmente se utiliza UTF-8.

 

Hecho esto sólo nos queda hacer clic en "Continuar" y esperar a que se cargue el archivo. Tardará más o menos, dependiendo del tamaño del fichero.

 

Pasos a seguir para la creación de un buscador con PHP y MySQL. Supongo al lector familiarizado con la programación en php y la administración básica de Mysql.

Como punto de partida, la información a buscar la tenemos que tener almacenada en una tabla de nuestra base de datos. Pongamos como ejemplo una tabla con artículos técnicos que llamaremos ARTICULOS. Esta tabla ARTICULOS tendrá como mínimo dos campos llamados TITULO y DESARROLLO, que almacenarán el título del artículo y su contenido respectivamente.

Los tipos de los campos a buscar deberán ser CHAR, VARCHAR o TEXT con sus variantes.

Ahora diseñaremos una página con un formulario y una caja de texto para escribir la cadena de consulta "busqueda" y llamar al script de búsqueda "buscar.php". Ejemplo:

<FORM METHOD=POST ACTION="buscar.php"> Buscar: <INPUT TYPE="text" NAME="busqueda"> </FORM>

En el fichero buscar.php es donde está el click de la cuestión. Hay que hacer la consulta que busque las palabras y devuelva como resultado los registros coincidentes. Hasta aquí parece fácil y podríamos resolverlo así:

SELECT * FROM ARTICULOS WHERE DESARROLLO LIKE '%$busqueda%' OR TITULO LIKE '%$busqueda%'

Pues esta consulta nos mostrará todos los artículos que en su titulo o en su contenido aparezca la frase de búsqueda tal y como nosotros la introducimos. Esto es muy limitado ya que un cambio en el orden de las palabras o un artículo de separación dará al traste con nuestra búsqueda no mostrando los resultados deseados. Si bien podríamos depurar y mejorar la sintaxis de nuestra búsqueda utilizando el operador LIKE las búsquedas resultarían muy lentas y no tendrían el resultado esperado.

La solución mas eficiente es utilizar los índices FULLTEXT específicamente indicados para estos menesteres. Pues bien esto implica ir a nuestra base de datos, y crear un indice FULLTEXT con todos los campos que deseamos incluir en nuestra busqueda, que en nuestro caso son TITULO y DESARROLLO. Para ello basta con el phpmyadmin o bien escribir la instrucción directamente:

ALTER TABLE ARTICULOS ADD FULLTEXT(TITULO, DESARROLLO);

Una vez creado el índice la instrucción SQL para buscar será:

SELECT * FROM ARTICULOS WHERE MATCH(TITULO, DESARROLLO) AGAINST ('$busqueda')

Esta línea utiliza la función MATCH ... AGAINST ... que encuentra el texto buscado, usando consultas en lenguaje natural parecido a como lo hacen los motores de búsqueda. Además, se calcula internamente una puntuación en función de como aparecen los términos buscados dentro de nuestro artículo.

Perfeccionando la búsqueda:

SELECT * , MATCH (TITULO,DESARROLLO) AGAINST ('$busqueda') AS puntuacion FROM ARTICULOS WHERE MATCH (TITULO, DESARROLLO) AGAINST ('$busqueda') ORDER BY puntuacion DESC LIMIT 50

Esta línea devuelve los 50 primeros resultados encontrados ordenados de mas a menos puntuación. El valor de la puntuacion es un número decimal comprendido entre 0 y 1 por cada ocurrencia del patrón de búsqueda, que se irá sumando si ese patrón es encontrado en varias ocasiones. De cualquier forma esta puntuación es un algoritmo interno de la base de datos.

Algunos problemas. Las búsquedas realizadas con MATCH ...AGAINST en ocasiones fallan cuando el término a buscar contiene una sola palabra. Por el contrario son unas búsquedas rapidísimas que producen mejores resultados que otros métodos mas rudimentarios como el LIKE cuando se trata de varias palabras o frases.

La solución que le he dado a ese problema de las búsquedas con MATCH...AGAINST has sido chequear el número de palabras a buscar, utilizando una búsqueda simple con LIKE en el caso de una sola palabra, y el método MATCH...AGAINST en el caso de varias. Ejemplo del fichero buscar.php

<?php //cadena de conexion mysql_connect("host","usuario","password"); //DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe if ($busqueda<>''){    //CUENTA EL NUMERO DE PALABRAS    $trozos=explode(" ",$busqueda);    $numero=count($trozos);   if ($numero==1) {

   //SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE    $cadbusca="SELECT REFERENCIA, TITULO FROM ARTICULOS WHERE VISIBLE =1 AND DESARROLLO LIKE '%$busqueda%' OR TITULO LIKE '%$busqueda%' LIMIT 50";   } elseif ($numero>1) {   //SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST   //busqueda de frases con mas de una palabra y un algoritmo especializado   $cadbusca="SELECT REFERENCIA, TITULO , MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) AS Score FROM ARTICULOS WHERE MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50"; } $result=mysql("teleformacion", $cadbusca); While($row=mysql_fetch_object($result)) {    //Mostramos los titulos de los articulos o lo que deseemos...   $referencia=$row->REFERENCIA;    $titulo=$row->TITULO;    echo $referencia." - ".$titulo."<br>";; } ?>

Buscar datos

Criterios de búsqueda

Muchas veces no nos interesa mostrar toda la tabla, sino algún dato específico de la misma. Pero para buscar uno o varios datos, debemos saber otros, por ejemplo, en la tabla "agenda" vista en páginas anteriores, para buscar el teléfono o el email de alguien, debemos saber su nombre.

El criterio de búsqueda es el dato que tenemos para poder buscar los demás. es decir aquí el criterio de búsqueda será el nombre, y los datos buscados serán el teléfono y el email.

Busqueda exacta

Le llamamos así a la búsqueda en la que hay que escribir el dato que conocemos (el nombre en este ejemplo) de forma completa. para ello seleccionamos toda la tabla, y aplicamos luego la sentencia where, para buscar el registro que coincida con la condición que indiquemos.

$sql="select * from agenda where nombre='Vicente Gracia'"

la sentencia where se usa de la misma manera que vimos para modificar datos. es decir indicamos el nombre del campo, y lo igualamos al valor que debe tener. Es aquí donde establecemos el criterio de búsqueda,

El resto de código php es el mismo que hemos usado para mostrar la tabla completa. Así el siguiente código nos mostrará además del nombre indicado, el teléfono y el email:

$con=mysql_connect("localhost","root","");mysql_select_db("miagenda",$con); $sql="select * from agenda where nombre='Vicente Gracia'"; $datos=mysql_query($sql,$con);while ($row=mysql_fetch_array($datos)) { $nombre=$row['nombre']; $telefono=$row['telefono']; $email=$row['email']; echo "$nombre, $telefono, $email. <br/>"; }mysql_close($con);?>

Aunque lo normal en este caso es que haya un sólo registro coincidente, seguimos utilizando el bucle while por si hubiera más de uno, en ese caso se nos mostrarían todos los registros que cumplieran las condiciones indicadas.

El resultado del ejemplo anterior, nos dará el siguiente resultado:

Vicente Gracia, 685138554, [email protected].

Esto es un simple ejemplo para indicar cómo buscar datos en una base, pero como puedes ver esto tal como está hecho aquí, no resulta muy eficaz, por lo que lo normal es, mediante un formulario, recoger en una variable el dato que nos da el usuario (criterio de búsqueda), y buscar esa variable en la base de datos.

Es así como podemos crear un buscador. El usuario introduce sus datos de búsqueda, nosotros los buscamos en la base y le devolvemos lo que hemos encontrado. El resto es cuestión de organización y presentación de la página.

Modificar registros de nuestra base de datos

Lo primero, es lo primero, para modificar hay que tener permiso para ello en el servidor de BD, el resto nos viene de corrido. Primero seleccionamos el registro que deseamos modificar, y luego, mandamos una consulta con la modificaciones, o ambas cosas a la vez. Suponemos que las modificaciones las recogemos de un formulario como el de la lección anterior .

Modificar registros opcion A

<html><body>

<?php if (isset($id)){ // process form $link = mysql_connect("localhost", "root"); mysql_select_db("mydb",$db); $sql = "SELECT * FROM agenda WHERE id = $id" $result = mysql_query($sql); $sql = "UPDATE agenda SET nombre='$nombre', direccion='$direccion',". "telefono='$telefono', email='$email'"; $result = mysql_query($sql); }else{ echo "Debe especificar un 'id'.\n";}

</body></html>

O bien,

Modificar registros opcion B

<html><body>

<?php if (isset($id)){ // process form $link = mysql_connect("localhost", "root"); mysql_select_db("mydb",$db); $sql = "UPDATE agenda SET nombre='$nombre', direccion='$direccion',". "telefono='$telefono', email='$email' WHERE id=$id"; $result = mysql_query($sql);}else{ echo "Debe especificar un 'id'.\n";}

</body></html>

Borrar registros de nuestra base de datos

El proceso de borrar un registro es identico al de modificar, solo que en vez de utilizar UPDATE utilizamos DELETE en la sentenica SQL. Por tanto el script quedaría como sigue.

Borrado registros de BD

<html><body>

<?php if (isset($id)){ // process form $link = mysql_connect("localhost", "root"); mysql_select_db("mydb",$db); $sql = "DELETE agenda WHERE id=$id") $result = mysql_query($sql);}else{ echo "Debe especificar un 'id'.\n";}

</body></html>