mysql: reparar tabla por consola / repair table from command line

Para checkear o reparar tablas de mysql por consola, debemos primero ingresar a la base de datos en cuestión:

[factura@localhost ~]$ mysql -uusuario -ppassusuario
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.37 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use dbclientes;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

Luego, podemos hacer un check sobre una tabla específica:

mysql> check table temp_ventas;
+------------------+-------+----------+------------------------------------------------------------------------+
| Table            | Op    | Msg_type | Msg_text                                                               |
+------------------+-------+----------+------------------------------------------------------------------------+
| temp_ventas      | check | error    | Table 'temp_ventas' is marked as crashed and should be repaired        | 
+------------------+-------+----------+------------------------------------------------------------------------+
1 row in set (0.00 sec)

y con un resultado como este, realizar un repair:

mysql> repair table temp_ventas;
+------------------+--------+----------+--------------------------------------+
| Table            | Op     | Msg_type | Msg_text                             |
+------------------+--------+----------+--------------------------------------+
|      temp_ventas | repair | warning  | Number of rows changed from 13 to 14 | 
|      temp_ventas | repair | status   | OK                                   | 
+------------------+--------+----------+--------------------------------------+
2 rows in set (0.03 sec)

Publicado en Uncategorized | Etiquetado , , | Dejar un comentario

cerrar conexiones TCP / killing tcp connections

Si alguna vez tuvimos un servidor bajo ataque, seguramente hemos tenido la necesidad de cerrar o matar determinadas conexiones a nuestro servidor. Con un netstat, vemos la conexión, pero no tenemos opción de matarla.

Para ello, podemos utilizar el comando tcpkill, que viene en el paquete dsniff, junto con otras utilidades de línea de comandos.

Así que si no lo tenemos, primero, lo instalamos:

$ sudo yum install dsniff

Luego, podremos utilizar el tcpkill de diferentes maneras, por ejemplo:

# tcpkill −9 host www.gmail.com
# tcpkill −9 192.168.0.1
# tcpkill −9 host hvivani.com.ar and host www.google.com

Se sienten mas tranquilos ahora ?

Publicado en Uncategorized | Etiquetado , , , | Dejar un comentario

Utilizar Lista de Parámetros en Stored Procedure

Tal vez se encuentren en la situación, donde deban pasarle una lista variable de parámetros a un sp. Por ejemplo, supongamos que se seleccionan los id de cliente 1,27,345,73 y deben pasarse a un sp que debe consultar los datos de los id de cliente seleccionados.

Tenemos varias soluciones posibles, inclusive, en SQL Server 2008 es posible solucionarlo utilizando un xml pasado por parámetro, pero vamos a aproximar una solución mas general, que nos sirva para diferentes motores.

Lo que hacemos es crear una función, a la que le pasamos la lista de ids separada por comas, y nos devolverá los id en una tabla que utilizaremos para filtrar los ids en la consulta de clientes.

La función:

CREATE FUNCTION intlist_to_tbl
(@list nvarchar(MAX))
RETURNS @tbl TABLE (number int NOT NULL) 
AS
BEGIN
   DECLARE @pos        int,
           @nextpos    int,
           @valuelen   int

   SELECT @pos = 0, @nextpos = 1

   WHILE @nextpos > 0
   BEGIN
      SELECT @nextpos = charindex(',', @list, @pos + 1)
      SELECT @valuelen = CASE WHEN @nextpos > 0
                              THEN @nextpos
                              ELSE len(@list) + 1
                         END - @pos - 1
      INSERT @tbl (number)
         VALUES (convert(int, substring(@list, @pos + 1, @valuelen)))
      SELECT @pos = @nextpos
   END
   RETURN
END

El procedimiento:

CREATE PROCEDURE consultarListaClientes 
@ids varchar(50) 
AS
   SELECT id, razonsocial
   FROM   clientes 
   inner join intlist_to_tbl(@ids) i ON clientes.id = i.number

La llamada:

EXEC consultarListaClientes '1, 27, 345, 73'

Vale aclarar que esta solución no es la mas rápida, en terminos de velocidad, si la cantidad de ids a consultar es muy grande, será lenta, pero nos servirá para resolver muchas situaciones simples.

Publicado en Uncategorized | Etiquetado , | Dejar un comentario

Actualizar Mapas Garmin Argentina bajo Linux

Para actualizar los mapas de un gps Garmin desde Linux, hay un procedimiento muy simple:

Desde el sitio del Proyecto Mapear, descargamos el último “Mapear en Archivo Directo”. (Descargas –> ProyectoMapear). Por ejemplo el MapearV102GPS.exe

Una vez descargado lo instalamos con wine:

$ wine MapearV102GPS.exe

Screenshot from 2013-04-23 18:46:05

Este proceso descomprimirá un archivo llamado GMAPSUPP.img que contiene la última versión de todos los mapas de la argentina.

Por defecto, al finalizar el proceso lo encontraremos en:

/home/usuario/.wine/drive_c/Garmin/GMAPSUPP.img

Lo unico que resta por hacer es copiar este archivo .img a la tarjeta SD de nuestro GPS Garmin.

Consideraciones:

- En el gps debe existir la carpeta Garmin y dentro de esta deberá colocarse el img.

- Es una sana costumbre hacer un backup o guardar el .img anterior por las dudas.

- Los dispositivos viejos leen solo un img. Si por alguna razón tenemos que poner mas de un img, antes debemos unirlos con por ej.: mkgmap

- Para confirmar que los mapas se cargaron con exito reiniciamos el dispositivo y veremos el cartel Loading Maps…

- También podemos verificarlo en el dispositivo en Tools/Settings/Map/Map Info

- Las tarjetas de memoria debe estar formateadas en FAT32, con su consiguiente limitación en tamaño por archivo de 4Gb.

Publicado en Uncategorized | Etiquetado , , | 1 comentario

Actualizar Mapas Garmin Argentina

Estos son los pasos para actualizar los mapas de Argentina en un gps Gamin:

1) De la página de Garmin descargamos el Garmin Training Center para Windows

2) Desde la página de Garmin también, descargamos el MapSource

3) Desde el proyecto mapear, descargamos la ultima versión de los mapas. Versión para MapSource. Hay que registrarse en el sitio.

4) Instalamos los programas de los puntos 1) y 2)

5) Abrimos el MapSource y seleccionamos del menú PC Base Map. Ubicamos el archivo descargado de mapear y lo seleccionamos.

6) Veremos un mapa de Argentina con todas las regiones para seleccionar. Las seleccionamos todas.

7) Conectamos el GPS con el cable USB y presionamos el botón “Send To Device”. En la opción “What to Send” debe estar seleccionado “maps”.

Una vez finalizada la carga, tendremos los mapas actualizados y listos para usar.

Publicado en Uncategorized | Etiquetado , | 4 comentarios

Utilizando parámetros opcionales en Sql Server Stored Procedure

Supongamos que tenemos un programa que realiza una consulta a una base de datos sql server a través de un stored procedure. Ese programa debe pasarle parámetros, o no, en función de las selecciones del usuario.

En otro post, vimos como podemos pasarle parametros null a un stored procedure. Ahora vamos a utilizarlo para armar una consulta de acuerdo a criterios variables:

CREATE procedure [dbo].[ConsultaPorCriterios]
@idProvincia int,
@superficieMin float,
@superficieMax float,
@dni as varchar(10)
AS

select   idProvincia
        , superficie
        , dni
from tablita
where    (idPersona = @idPersona or @idPersona is null) and
         ((superficie between @superficieMin and @superficieMax) or @superficieMax is null) and
         (dni = @dni or @dni is null)

Publicado en Uncategorized | Etiquetado , | Dejar un comentario

Ordenar texto como número en Sql Server

Supongamos que tenemos almacenados números en un campo de tipo varchar. La manera de ordenarlos como número es:

select *
from tabla
order by
    (case
        when isnumeric(colvarch) = 1 then cast (colvarch as bigint)
     end)
Publicado en Uncategorized | Etiquetado , | Dejar un comentario