miércoles, 15 de julio de 2015

Funcion para generar sentencia SQL Insert into desde excel

Vamos a crear una función en excel la cual nos permita generar una cadena de texto de la sentencia INSERT INTO de SQL Server a partir de los datos de una o varias columnas así como vemos en la imagen inferior.
Tenemos el registro de países con los campos idpais, descripción y a la derecha se genera la sentencia insert into de todos los registros.



Esto lo lograremos utilizando una función personalizada en vba.

DESARROLLO
Presionamos Alt + F11 para dirigirnos a nuestro entorno de visual basic
Menu insertar - > Modulo

Pegamos el siguiente código:

Function GenerarSQL(Rango As Range, Tabla As String)
For Each celda In Rango
    If IsNumeric(celda) Then
        Concat = Concat & celda & ","
    Else
        Concat = Concat & Chr(39) & celda & Chr(39) & ","
    End If
Next
    GenerarSQL = Left(Concat, Len(Concat) - 1)
    GenerarSQL = "INSERT INTO " & Tabla & " VALUES (" & GenerarSQL & ")"
End Function
Esta funcion llamada GenerarSQL va a constar de dos parámetros de entrada:
Rango: Rango de celdas las cuales contienen información y que representaran a un campo de una tabla.
Tabla: Cadena de texto que sera el nombre de la tabla.

Si los valores de nuestro parámetro Rango son de tipo texto se le  agrega una camilla simple antes y después del valor. Ya que para el SQL la cadena de texto lo necesita.

EJECUCIÓN
Nos ubicamos en la celda E4 de nuestra hoja de calculo y escribimos la función que hemos creado anteriormente: =GenerarSQL(B4:C4,"TB_PAISES")

Desde B4:C4 se encuentran los datos y "TB_PAISES" es el nombre de la tabla a la cual le vamos a insertar los datos.




SQL SERVER

En nuestra base de datos creamos nuestra tabla llamada TB_PAISES

CREATE TABLE [dbo].[TB_PAISES](
[IDPAIS] [int] NULL,
[DESCRIPCION] [varchar](250) NULL
)


Luego copiamos la sentencia de la columna "E" de nuestra hoja de excel y pegamos en el sql server, Ejecutamos las sentencias y se registraran todos los países que teníamos en nuestra hoja de excel.



Esto puede servirnos para insertar registros de nuestra hoja de excel hacia cualquier tabla ya que es personalizable el rango de celdas y el nombre de la tabla.

Desde aqui podran bajar el archivo de ejemplo.

No hay comentarios:

Publicar un comentario

Cargar multiples archivos txt en SSIS

 Fuentes Archivos planos Descargar AQUÍ los archivos Consulta SQL de creacion de tabla Despacho en SQL Server CREATE TABLE [dbo].[Despacho]...