Publi

  • Otra forma de trabajar con MySQL desde Emacs con org-mode y org-babel


    Sé que org-mode vale para mucho más, pero es tan grande su utilidad, que hasta para esto nos puede servir, y nos permitirá hacer cosas muy chulas.

    Aunque no es tan flexible como tener una instancia del comando mysql abierto, la potencia que nos ofrecerá para tratar la salida es grandísima.

    Sólo tenemos que tener org-mode instalado, y org-babel configurado. Para configurar org-mode y org-babel, debemos introducir en nuestro $HOME/.emacs lo siguiente:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    (require 'org-install)

    (org-babel-do-load-languages
     'org-babel-load-languages
     '((R .
    Leer artículo completo
  • Utilizar una conexión MySQL desde EMACS

    Encontré hace tiempo en una página que, lamentablemente, ya no está operativa una forma de utilizar EMACS como cliente MySQL, aunque intentaré ampliar dicha información con alguna experiencia personal. Aunque podemos utilizar directamente el SQL mode, es muy incómodo porque cada vez que nos queramos conectar tenemos que dar todos los datos de la conexión, y eso nos hace perder la paciencia a más de uno. Es verdad que para una conexión esporádica no está mal, pero si te sueles conectar siempre a los mismos servidores, esto puede resultar muy útil.… Leer artículo completo

  • Acabo de borrar un archivo por accidente ! ¡ Voy a morir ! ¡ No aún no !

    El título está basado en un hecho real, aunque casi casi el truco que pondré a continuación está limitado a archivos de texto, ya que podemos identificar fácilmente su contenido. Si me apuráis, valdría con cualquier tipo de archivo, pero los archivos binarios, raramente podemos saber con exactitud qué contienen.

    Me encontraba yo preparando una entrada de datos para base de datos, fue un archivo que me llevó un tiempo donde hacía numerosas consultas, y llega la hora de hacer la consulta, de estas veces que puede que por el cansancio, por tener un día un poco tonto, por no pulsar bien una tecla, o un lapsus, en lugar de:

    $ mysql -uroot -pMICLAVE < consultas.sql

    se me ocurre escribir:

    $ mysql -uroot -pMICLAVE > consultas.sql

    vamos, que el archivo con el que llevaba ya un rato se borró por completo, y yo me encontraba como la foto de portada.… Leer artículo completo

  • Backup de usuarios en MySQL

    4859841581_d254d4892b_o
    Cuando hacemos un dump de una base de datos MySQL, se suelen ignorar las bases de datos test, mysql e information schema, es una buena práctica, entre otras cosas porque si sobreescribimos la tabla mysql, podemos tener problemas en el futuro sobre todo si hay algún cambio menor (o mayor) de versión.

    Al final, la única información que nos interesa salvar de la base de datos mysql son los usuarios del sistema, con sus respectivas claves y permisos, que normalmente si tenemos varias aplicaciones corriendo sobre el mismo sistema de bases de datos, tendremos varios usuarios y no querremos perderlos.… Leer artículo completo

  • Logging en MySQL

    Muchas veces, cuando se desarrollan procedimientos almacenados (stored procedures) más o menos complejos, podemos dar con errores que nos pueden hacer perder mucho tiempo, y a veces la solución es visualizar el valor de una variable en un punto determinado del código.

    Aquí va una pequeña ayuda, es un código muy sencillo que podemos insertar en nuestra base de datos y nos permitirá escribir en una tabla lo que va pasando.… Leer artículo completo

  • Introduciendo datos al servidor MySQL desde CSV con ejemplos (importar desde CSV)

    Esto nos resultará muy util a la hora de cargar datos en nuestra base de datos. imaginemos que tenemos una tabla como esta:

    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE Testing.NewTable (
        Id BIGINT,
        Nombre VARCHAR(100),
        Email VARCHAR(100),
        Telefono VARCHAR(100)
    )
    ENGINE=MyISAM;

    por ahora vacía, pero tenemos todos los datos que necesitamos en un archivo CSV como este:

    Caso más simple

    1;Antonio;antonio@dominio.com;123456789
    2;Armando;armando@dominio.com;234567891
    3;Carlos;carlos@dominio.com;345678912
    4;Ceferino;cefe@dominio.com;456789123
    5;Cipriano;cipri@dominio.com;567891234

    El primer ejemplo es fácil, simplemente hacemos:

    1
    2
    3
    LOAD DATA INFILE '/tmp/nombres.csv'
      INTO TABLE Testing.
    Leer artículo completo
  • Magia en Bash 50 ejemplos en una sola linea (o dos)

    Bash es una de las herramientas más potentes que tenemos a nuestro alcance, aunque no sólo de bash trata el artículo, sino de trucos para consola, one-liner como dirían muchos (aunque habrá algunos two-liners) que podemos utilizar y pueden hacernos la vida un poco más fácil:

    Cadenas de texto

    Trim

    Es una herramienta que utilizaremos para recortar nuestra cadena basándonos en los a la ìzquierda y a la derecha, en este caso nos basaremos en los espacios, que es uno de sus usos más comunes (así podemos obtener la cadena limpia tanto por delante como por detrás.… Leer artículo completo

  • Numerar los resultados de un SELECT en MYSQL

    Este ejemplo puede tener muchas utilidades. Por ejemplo, que queramos generar automáticamente campos ID (sin autoincrement), tanto empezando en 1 como empezando en el número que queramos o realizar alguna operación matemática con ese número; en definitiva vamos a introducir un número incremental a cada resultado que nos devuelva.

    Imaginamos que tenemos una tabla `Emails` donde tengo correos electrónicos y nombres de varios amigos. Para crear la estructura, copiar y pegar en MySQL:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    DROP SCHEMA IF EXISTS `PoesiaBinaria` ;
    CREATE DATABASE IF NOT EXISTS `PoesiaBinaria` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

    USE `PoesiaBinaria`;

    CREATE TABLE `Emails` (
           `Email` VARCHAR(100) NOT NULL,
           `Nombre` VARCHAR(200) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

    INSERT INTO `Emails` (`Nombre`, `Email`) VALUES ('Pedro', 'pedro@misamigos.com');
    INSERT INTO `Emails` (`Nombre`, `Email`) VALUES ('Javier', 'javier@misamigos.com');
    INSERT INTO `Emails` (`Nombre`, `Email`) VALUES ('Gaspar', 'gaspar@misamigos.com');
    INSERT INTO `Emails` (`Nombre`, `Email`) VALUES ('Maria', 'maria@misamigos.com');
    INSERT INTO `Emails` (`Nombre`, `Email`) VALUES ('Sandra', 'sandra@misamigos.com');
    INSERT INTO `Emails` (`Nombre`, `Email`) VALUES ('Andrea', 'andrea@misamigos.com');
    INSERT INTO `Emails` (`Nombre`, `Email`) VALUES ('Clara', 'clara@misamigos.com');
    INSERT INTO `Emails` (`Nombre`, `Email`) VALUES ('Andres', 'andres@misamigos.com');

    Ahora puedo extraer datos de dicha tabla:

    1
    SELECT * FROM `Emails`;

    Que me devuelve:

    +——–+———————-+
    | Email | Nombre |
    +——–+———————-+
    | Pedro | pedro@misamigos.com |
    | Javier | javier@misamigos.com |
    | Gaspar | gaspar@misamigos.com |
    | Maria | maria@misamigos.com |
    | Sandra | sandra@misamigos.com |
    | Andrea | andrea@misamigos.com |
    | Clara | clara@misamigos.com |
    | Andres | andres@misamigos.com |
    +——–+———————-+
    8 rows in set (0.00 sec)

    Ahora bien, para numerar los resultados podemos hacer lo siguiente:

    1
    2
    SET @numero=0;
    SELECT @numero:=@numero+1 AS `posicion`, `Emails`.
    Leer artículo completo
  • Hacer funcionar tu viejo ordenador de router, y filtrar por dirección MAC

    computers

    Si tenemos un viejo ordenador, una de las funciones que puede hacer es de router. Personalmente, yo lo tengo de router, centro de descargas, almacenamiento compartido, copias de seguridad remotas, ejecutar cron jobs en ciertos servidores que no los soportan y para ver películas en la tele.

    Para que un ordenador pueda funcionar como router, es tan fácil como incluir en /etc/sysctl.conf la siguiente línea:

    net.ipv4.ip_forward=1

    (Aún con IPv4, sí, aunque podemos utilizar el forward ipv6, teóricamente sin ningún problema)
    En muchos sistemas ya funcionaría, pero dependiendo de la distribución debemos dar un permiso adicional:

    $ sudo iptables -A FORWARD -j ACCEPT

    Aunque si queremos restricción por MAC tendremos que currar un poco más.… Leer artículo completo

  • Introducir el resultado de una consulta SELECT de mysql en un Array [BASH]

    data

    ¡Bash es una pasada! Es capaz de dejarnos hacer maravillas en poco tiempo y de automatizar lo inautomatizable, en este caso, traigo un ejemplo más, de cómo un código muy corto es capaz de presentarnos los resultados de una consulta SELECT de mysql:

    Los datos de prueba provienen de uno de mis proyectos: Málaga Bloguea donde muestro las últimas novedades de blogs de Málaga.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #!/bin/bash

    OLDIFS=IFS
    MYSQL_USER=#Usuario Mysql
    MYSQL_PASSWORD=#Password Mysql
    MYSQL_HOST="localhost"
    # IFS personalizado, para poder delimitar los campos correctamente
    IFS="`echo -e "\t\n\r\f"`"

    # Declaramos la variable como array, no es estrictamente necesario, pero sí un poco más correcto
    declare -a IPS

    # Generamos la consulta (Si vamos a utilizar un juego de caracteres determinado, como
    # UTF8, debemos especificar primero para evitar sorpresas.
    Leer artículo completo