Saltar al contenido

Como convertir archivo SQL a CSV

Si estás buscando una forma de convertir archivo SQL a CSV desde powershell, estás en el lugar correcto. En este artículo te explicaremos paso a paso cómo realizarlo. Además, te mostraremos algunos trucos y consejos que te serán de gran ayuda. ¡No pierdas detalle!

En este articulo abordares una de las formas de conectarse a SQL server desde powershell.

Powershellpermite ejecutar códigos y comando contra una gran variedad de fuentes de datos, incluyendo SQL Server. PowerShell puede usarse para automatizar tareas administrativas y de generación de informes.

Índice

    Convertir consulta SQL a CSV

    Necesitamos conectarnos a SQL server desde power shell para generar un archivo csv con la información de una tabla. Para esto debemos trabajar con los distintos objetos los cuales se combinaran para ejecutar un procedimiento o una consulta de seleccion.

    Objeto system.data.sqlclient.sqlconnection

    En primer lugar, abre tu powershell y ejecuta el siguiente comando para crear un objeto system.data.sqlclient.sqlconnection :

     $Connection = new-object system.data.sqlclient.sqlconnection

    Este objeto hacen permite crear un objeto de conexión a sql server y nos permitirán trabajar.

    Ahora que ya tenemos importado el módulo, podemos empezar a asignar valores a la propiedad del objeto. En este caso, vamos a usar el ConnectionString para poder contectarnos y realizar consulta sql .

    Ejecuta el siguiente comando:

     $Connection.ConnectionString = «server=’NombreinstanaciaBasededatos’;database=’NombreBase de datos’;trusted_connection=true;»

    Luego de asignar los valores podemos proceder a abrir la conexión con el servidor mediante la función open().

    Objeto System.Data.SqlClient.SqlCommand

    El objeto System.Data.SqlClient.SqlCommand permite ejecutar una instrucción o procedimiento almacenado contra la base de datos.

    Este objeto se crea asignando valores a la propiedad ConnectionString del objeto anteriormente creado. Hasta este punto nuestro código seria este:

    Objeto System.Data.SqlClient.SqlDataAdapter

    Una vez creado el objeto procedemos a asignarle la instrucción SQL que queremos ejecutar y asignar este objeto a la variable Adapter y este seria resultado.

    Objeto System.Data.DataTable

    Esta objeto almacenara los registros obtenidos de la consulta SQL los cuales son llenados por el objeto DataAdapter. por lo tanto nuestro código final seria

    Generar archivo SQL a CSV

    Hasta el momento hemos explicado cada objeto para conectarnos a sqlserver desde powershell. pero ahora mostraremos el código completo para convertir a csv una consulta sql con powershell.

    Función powershell Export-CSV

    Esta función permite pasar la información almacenada en el objeto datatable a un archivo csv.

    Ejecuta el siguiente comando para guardar los registros obtenidos de sql server en un archivo CSV:

     Export-CSV -Path «Ruta del archivo» –InputObject $data

    El Código quedaría de la siguiente manera:

    function GetSQLtoCSV($query)

    $Connection = new-object system.data.sqlclient.sqlconnection

     $Connection.ConnectionString = «server=’NombreinstanaciaBasededatos’;database=’NombreBase de datos’;trusted_connection=true;»

    $Command = New-Object System.Data.SqlClient.SqlCommand

    $Command.CommandText = $query

    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter

    $SqlAdapter.SelectCommand = $Command

    $Command.Connection = $Connection

    }

    $query = «select * from tabla»

    $Date = Get-Date -UFormat «%Y%m%d»;

    $outFile = «C:\scripts\CONTEXT_» + $Date +».csv»

    $result = GetSQLtoCSV $query

    $result | Export-CSV $outFile -NoType -Encoding UTF8 -Delimiter «,» 

    $a = $outFile

    En resumen para powershell es muy fácil obtener información de sql server y convertirla en formato csv.

    Solamente requiere crear tres objetos y ejecutar una función. esto nos permite Generar la descarga de informes que requieren ser ejecutados periódicamente.

    Adjunto archivo de ejemplo,solo debe cambiar extensión a .ps1

    Espero que este articulo les haya sido de ayuda.

    Que tenga un excelente día.