El Humo, Barinas ~= China. Contaminación….

Febrero 24th, 2010 by francesco

Bueno, ya no se que decir al respecto.

He llamado a programas de radio, hablado en mi trabajo, en donde pueda lo hago, sin embargo seguiremos siendo un país inconsciente.

A la larga creo que parte de esto es un poco por el verano extremo y la falta de brisa de nuestra ciudad sin embargo es preocupante….

Siempre suelo sufrir de problemas de garganta, gripes y demás en estas épocas.

Aquí les dejo una foto de Barinas y otra de China, hehehe lo cómico es que se parecen:

Véase la neblina

Véase la neblina

Otra foto

Otra foto

Ahora insertaré una foto de china, que bajé de google

Bajado de Google

Bajado de Google

Quisiera hacer un llamado a las autoridades competentes, sobre todo en materias de legislación.

También a los bomberos encargados de apagar los incendios, los cuales creo que no han sido apoyados

económicamente lo suficiente como para poder tener controlados estos eventos.

Búsqueda y eliminación de archivos usando find

Enero 18th, 2010 by francesco

Hola. En esta oportunidad he tenido que relizar una tarea un poco fastidiosa, menos mal que Linux ofrece herramientas para solucionar muchos problemas, es solo cuestión de saberlas encontrar.

Muchas veces, cuando abrimos un archivo usando un editor en modo gráfico se crea una copia de respaldo de dicho archivo con un símbolo de tilde al final ” ~ “. El problema con eso es que a la hora de hacer una copia, estaremos copiando archivos que no necesitamos, por lo que a veces se requiere borrarlos.Esto lo podemos solucionar con el siguiente comando:

find . -name *.php~ | xargs rm

Hay que ubicarse en el directorio que queremos limpiar. El comando buscara todos los archivos con las características antes mencionadas(  Véase la expresión *.php~  ). Estos archivos serán pasados al comando rm y se borrarán.

Este comando tambien será útil para aquellas personas que deseen limpiar un directorio de archivos con extenxiónes .exe o cualquier otra cosa extraña.

Saludos.

Cargar Csv desde Cónsola de MySQL

Diciembre 28th, 2009 by francesco

Hola.

Hoy veremos como hacer para subir un archivo de tipo CSV desde la cónsola de MySQL.

Muchos de ustedes dirán “Si pero eso se hace mucho más fácilmente desde PhpMyAdmin…. Este Francesco es un mazoquista”. Ok tal vez sea más fácil desde PhpMyAdmin, pero si el archivo pesa más de 1GB, cuanto creen que se tarden en PhpMyAdmin?????

Es por eso que en el manual de MySQL existe toda una sección dedicada al comando LOAD DATA el cual veremos a continuación.

Antes de continuar necesitamos conocer que un archivo de tipo CSV esta compuesto por palabras, separadas por algo e identificadas por algo más. De esa manera, cada palabra sería como un campo de una tabla y cada fila de ese archivo sería el equivalente a una fila de una tabla.

Por ejemplo:

123456;"PEDRO PEREZ";34
34123456;"Nombre EJEMPLO";23

En este caso los campos se separan por ; y los tipos de datos (Básicamente Cadenas o Números) se diferencian por “.

La línea anterior es análoga a la siguiente:

123456,'PEDRO PEREZ',34
34123456,'Nombre EJEMPLO',23

La esencia esta en darle el significado correcto a los separadores e identificadores de campo y a algo que no vemos: El salto de línea. Intuímos que por defecto una línea termina en un “Enter” (New Line) sin embargo esto dependiendo del sistema operativo, tipo de archivo y codificación de caractéres puede cambiar. Hay que estar pendientes con eso, en Windows por ejemplo es Retorno de Carro + Nueva Línea.

Como sabemos los caracteres especiales deben escribirse usando una secuencia de escape, ya que no son caracteres imprimibles. Para este caso, se usa el símbolo \ por lo que el “Enter” es \n y el retroceso o retorno de carro es \r.

Dicho esto procedo a mostrar el comando que usaremos:

LOAD DATA LOCAL INFILE “/ruta/hacia/tu/archivo.csv” INTO TABLE tabla_a_cargar

FIELDS TERMINATED BY ‘;’

ENCLOSED BY ‘”‘

LINES TERMINATED BY ‘\n’;

Ahora procedo a explicar línea por línea.

1.- LOAD DATA es el comando esencialmente, la palabra LOCAL indica que el archivo se obtendrá del equipo donde se corre el cliente MySQL INFILE “/ruta/hacia/tu/archivo.csv” Indica el nombre del archivo (Es siempre mejor usar la ruta absoluta), INTO indica en que tabla vamos a almacenar el contenido de ese CSV. Ojo hay que tener cuidado con la cantidad de campos y tipos de datos, ya que si difieren no se cargará el archivo.

2.- FIELDS TERMINATED BY ‘;’ le indica como separaremos los campos, en este caso por ;

3.- ENCLOSED BY ‘”‘ nótese que son dos comillas simples y una doble. Esto indica como se categorizan en el CSV los campos de tipo Cadena o String.

4.- LINES TERMINATED BY ‘\n’ indica como se termina cada línea en este caso es un Enter.

Otra cosa a tener en cuenta es el set de caracteres con que se creó el archivo. Hay que procurar de que la conexión con el servidor, la tabla y el archivo estén usando el mismo Set de Caracteres.

Con esto concluímos por hoy.

PD: Hace tiempo publiqué el artículo con un errror en la consulta, hacía falta la palabra TABLE luego de INTO. Mil disculpas.

Consulta de Relaciones en MySQL

Diciembre 28th, 2009 by francesco

Hola, de nuevo Yo.

Como sabemos en este mundo hay de todo. Hay quienes defienden algo  y quienes lo atacan. Yo no defenderé ni atacaré MySQL, solo diré que es la herramienta de manejo de Base de Datos que mejor conozco por ahora,  con la cual he tenido más experiencias.

Una de las desventajas es el manejo de las relaciones entre tablas. Estas se almacenan en la base de datos mysql y por lo tanto hay que hacer una consulta para poder analizar las relaciones. Buscando el otro día conseguí esta consulta. No recuerdo de donde la obtuve, fue hace mucho tiempo y me gustaría dar los créditos a la persona correcta, pero se me hace imposible.

SELECT CONCAT(table_name,’.',column_name,’->’,referenced_table_name,’.',referenced_column_name) as list_of_fks
FROM information_schema.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_SCHEMA=’database_name’
AND REFERENCED_TABLE_NAME is not null
ORDER BY TABLE_NAME, COLUMN_NAME

Lo único que se debe hacer es sustituir en la tercera línea la palabra database_name por el nombre de la base de datos que deseamos consultar.Esta consulta mostrará todas las relaciones que existan en esa base de datos.

Saludos.

¡Hola, mundo!

Enero 21st, 2009 by francesco

Hola Mundo!

Bienvenidos a mi blog.