Mi ventana abierta al mundo, sin paredes ni cristales

Archivo de March, 2007
19
March
2007

Existe una sentencia de comandos MySQL para importar un fichero separado por tabuladores, punto y coma, coma, etc. a una tabla de datos. Y yo creándome ficheros en php para tal fin… ya me vale.

¿De qué se trata?
El comando ‘load data’ nos permite importar a una tabla de datos de MySQL el contenido de un fichero delimitado por caracteres. Quién no ha tenido que traerse a la base de datos la lista de usuarios con sus correos electrónicos para manejarlos convenientemente con una aplicación que ataque a la base de datos? Pues eso hace este comando, pero sin tener previamente un script en php, por ejemplo, para importarlos.

¿A quién va dirigido?
A todos los que, como el menda, prefieren tener más tiempo libre y menos dedicado al trabajo. A veces… se puede.

Ejecutando
El comando es bastante sencillo. Desde la interfaz de comandos de nuestro sistema, entramos en la shell de comandos de MySQL:

$ mysql -u user_mysql -p

Damos un usuario con permisos, user_mysql, a la base de datos sobre la que vamos a trabajar y la contraseña.
Una vez dentro de la shell de mysql, escogemos la base de datos donde querramos importar los datos:

mysql> use db_mysql

Una vez en la base de datos, ejecutamos el comando para importar el fichero delimitado por caracteres:

mysql> LOAD DATA LOCAL INFILE '/fichero_por_punto_y_coma.csv'
INTO TABLE tabla_mysql FIELDS TERMINATED BY ';'
LINES TERMINATED BY 'r' (campo1, campo2, campo3);
Query OK, 106 rows affected (0.00 sec)
Records: 106  Deleted: 0  Skipped: 0  Warnings: 0

Una vez ejecutado, mysql nos informa de la ejecución (tiempo de ejecución, líneas añadidas a la tabla, si se ha borrado algún registro, si se ha omitido alguno y si alguno ha producido error). El fichero, al que se le pasa la ruta completa del disco duro, en este caso está en el raíz del disco de arranque (‘/fichero_por_punto_y_coma.csv’), se añade en local, podría hacerse en remoto, al host de la base de datos, pero para prevenir errores lo hemos colocado el equipo donde tenemos la base de datos. Al comando ‘LOAD DATA LOCAL INFILE’ le pasamos el fichero que vamos a importar, la tabla destino de la base, en este caso ‘usuarios’ y las siguientes opciones son referentes al contenido del fichero: carácter delimitador de la seperación de campos, en este caso ‘;’, pero podría ser tabulador (‘\t’), coma (‘,’), punto (‘.’) o cualquiera que querramos usar; terminador de línea, que en sistemas Mac es ‘\r’ y en Windows y Unix ‘\n’. Y finalmente, entre paréntesis, ponemos el orden de los campos de la tabla donde vamos a insertar los valores de nuestro fichero de texto.

Es muy sencillo y potente, podéis encontrar más información de este comando en la documentación de MySQL.

SaludoX

10
March
2007

Desde el proyecto de estilo Web 2.0 de Imagini VisualDNA puedes mostrarte al mundo entero, tus aficiones, tus gustos y compartirlo con el resto del mundo mundial. Te permite que se pongan en contacto contigo y tú con lso demás, y todo con un diseño y una calidad que ga gusto.

Eliges las imágenes que te definan, que te provoquen sensaciones, lo guardas en tu perfil y a compartir.

Puedes añadir tu perfil a tu blog, registrarte en su web…

SaludoX

1
March
2007

Después de tener instalado php4 en nuestro Debian, podemos encontrarnos que los binarios necesarios para correr php en la línea de comandos no están instalados. Los paquetes básicos de php4 se instalan para apache, como módulo, podéis ver la instalación en este tema.+

Si necesitamos ejecutar php desde la línea de comandos (CLI) tenemos que instalar el componente desde apt-get y comprobar que el fichero php.ini para la interfaz CLI esté bien configurado, porque es distinto del fichero php.ini de apache.

Instalamos php4-cli:

apt-get install php4-cli

Comprobamos que se haya instalado bien en el sistema, obteniendo la versión de php:

shell> php –v

Obteniendo algo del estilo:

PHP 4.3.10-18 (cli) (built: Nov  3 2006 21:56:29)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

Y lo más importante de todo, comprobamos el fichero php.ini para CLI del sistema, que todo esté bien configurado. Sobre todo que las extensiones que deben ejecutarse en nuestro sistema no estén comentadas.

Ruta del fichero php.ini de CLI:

/etc/php4/cli/php.ini

En mi caso concreto, las extensiones de mysql y gd (manejo de gráficos) estaban comentadas:

;extension=mysql.so
;extension=gd.so

las descomentamos y guardamos el fichero:

extension=mysql.so
extension=gd.so

para la ejecución de php-cli, sobre interfaz de línea de comandos, no es necesario reiniciar apache, ya que son dos servicios distintos.

SaludoX

1
March
2007

El sistema operativo Debian, una distribución veterana de Unix/Linux, permite la instalación de paquetes precompilados para cada versión del sistema operativo. ‘apt-get‘ es nuestro mejor aliado para una inatalción sencilla y rápida. Aunque como todo paquete de instalación… me saca de quicio, pero eso es algo personal.

Instalamos PHP4:

apt-get install php4

en las dependencias que instala php4, comprobamos si añade la de php4-mysql, para dar soporte a MySQL, si no es así, lo instalamos:

apt-get install php4-mysql

Una vez instalado, comprobamos si el fichero php.ini tiene descomentado la carga de la extensión de MySQL.

Ruta del fichero php.ini de Apache:

/etc/php4/apache/php.ini

Editamos el fichero, si tenemos las líneas comentadas (;):

;extension=mysql.so
;extension=gd.so

las descomentamos:

extension=mysql.so
extension=gd.so

Reiniciamos apache:

sudo apachectl graceful

y ya tenemos el sistema funcionando.

SaludoX