viernes, 26 de marzo de 2010

Eliminar registros duplicados en una tabla con SQL Server 2008

Hola gente, acá les tengo un código en una sola línea para eliminar esos molestos registros duplicados en tablas de bases de datos relacionales.

Entonces, cuando se nos presenta el caso de que muchas veces existan registros de datos de empleados, por ejemplo, que al ser exportados a una base de datos quedan con ciertas diferencias lexicográficas (p.e.: López, Lopez, loPez, etc.) que son difíciles de detectar, necesitamos un código que pueda ser utilizado masivamente, pero que sea flexible. Por lo que, éste algoritmo te permite permutar las búsquedas con el campo o campos de una tabla que necesites para realizar los filtros. Sin más preámbulo, aquí está el código:

delete tabla from (select fila = row_number() over(partition by tu_campo1, [tu_campo2] order by algun_campo) from tu_tabla) as tabla where fila <> 1

miércoles, 3 de marzo de 2010

Ejecutar programas de Transac SQL

Para esto usemos un Extended Stored Procedure que tiene SQL Server,

xp_cmdshell:xp_cmdshell {'command_string'}[no_output]'command_string',
es la sentencia del sistema que ejecutara no_output.

Es un parámetro opcional para que no devuelva nada. Ejemplo:xp_cmdshell 'cmd.exe d:\*.*'