martes, 10 de diciembre de 2019

Manejo de Archivos CSV con SQL Server

Posted by InfoTacticas Soluciones  |  No comments

Los ficheros CSV (siglas del inglés comma-separated values) son un tipo de documento sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas (o punto y coma) y las filas por saltos de línea. Los campos que contengan una coma, un salto de línea o una comilla doble deben ser encerrados entre comillas dobles.

El formato CSV es muy sencillo y no indica un juego de caracteres concreto, ni cómo van situados los bytes, ni el formato para el salto de línea. Estos puntos deben indicarse muchas veces al abrir el fichero, por ejemplo, con una hoja de cálculo.

Fuente: http://es.wikipedia.org/wiki/CSV

Un archivo CSV, se puede crear desde notepad o Microsoft Excel y guardarlo como .csv, en este caso puede utilizar comas para separar entre campos.



Para leer el contenido de un archivo csv y guardarlo en una tabla con un estructura adecuada a las columnas del archivo csv se utiliza una sentencia T-SQL llamada BULK INSERT o instrucción de inserción masiva. con este comando puedes importar algún documento a SQL SERVER desde un txt, xml, etc. y agregar registros a la tabla correspondiente.

Para ejemplificar este caso, crearemos la tabla ALUMNO y luego se importará el contenido del archivo csv

Descargar el Archivo csv

create table ALUMNO
(
 DocumentoIdentidad varchar(11),
 Nombres varchar(50),
 Apellidos varchar(50),
 Edad int
)

BULK 
INSERT ALUMNO
from 'E:\_ASESORIAS\SQL Importar CSV EXCEL\listado alumnos.csv' 
WITH 
    ( 
        FIRSTROW = 1, 
        MAXERRORS = 0, 
        FIELDTERMINATOR = ',', 
        ROWTERMINATOR = '\n' 
    )
    
select * from ALUMNO


Y el resultado que se obtiene es:



Como segundo ejemplo, importaremos un archivo csv con cabecera, y valores nulos, para ver la diferencia con el ejemplo anterior. Creamos la tabla RESUMEN_VENTAS.

Descargar el Archivo csv
create table RESUMEN_VENTAS
(year int,
JAN decimal(12, 2),
FEB decimal(12, 2),
MAR decimal(12, 2),
APR decimal(12, 2),
MAY decimal(12, 2),
JUN decimal(12, 2),
JUL decimal(12, 2),
AUG decimal(12, 2),
SEP decimal(12, 2),
OCT decimal(12, 2),
NOV decimal(12, 2),
DEC decimal(12, 2)
 )
 
BULK 
insert  RESUMEN_VENTAS
from 'E:\_ASESORIAS\SQL Importar CSV EXCEL\resumen_ventas_con_null.csv' 
WITH 
    ( 
        FIRSTROW = 2, 
        MAXERRORS = 0, 
        FIELDTERMINATOR = ',', 
        ROWTERMINATOR = '\n'
        --DataFileType ='char' 
        --DataFileType='widechar'
        , KEEPNULLS
    )  

truncate  table RESUMEN_VENTAS
select * from RESUMEN_VENTAS


Se utiliza FIRSTROW = 2 porque la data va a empezar desde la segunda fila, dado que en la primera están las cabeceras. Se considera KEEPNULLS, porque en la primera fila de datos no hay valores para los últimos 4 meses y si no se coloca este parámetro la instrucción lanza error.

Y el resultado que se obtiene es:



Para poder utilizar el asistente de SQL SERVER para Importar un archivo plano, vaya al Explorador de objetos, seleccione una base de datos que usted desee usar para importar datos desde un archivo .csv o .txt, haga clic con el botón derecho y en el menú contextual, elija la opción Importar archivo plano:


Esto hará abrir la página Importar archivo de introducción de archivo plano que le proporcionará una descripción general de las características y muestra qué se debe especificar para importar con éxito todos los datos desde un archivo plano a una base de datos de SQL Server.
Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.



En la siguiente página del asistente para poder Importar un archivo plano es la página Especificar archivo de entrada, especificar como Fuente de Datos (Data Source): Flat File Source (Fuente de Archivos Planos). En esta página, además necesitamos especificar el nombre de la datos de SQL Server.


Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.
En la siguiente pantalla tiene que escoger la ruta del archivo csv o txt en File Name (Nombre del Archivo) y en este caso marcar con check la opción:Nombre de Columna en la primera fila de datos (Column names in the first data row).




En la opción Advanced se muestra los tipos de datos de cada columna, pero hay un botón: Tipos Sugeridos (Suggest Types) que al hacer click en él se establecen de manera automática los tipos adecuados de cada columna. Hacer click en dicho botón.




El resultado obtenido es el siguiente:



En la opción preview, se tiene una vista previa de los datos a importar.
Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.


A continuación se tiene que especificar el tipo de autenticación y las credenciales.
Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.


A continuación se tiene que especificar la tabla destino donde se importarán los datos, por defecto pretende crearse una tabla con el nombre del archivo de texto o csv a importar y con esa estructura.


Queda como se aprecia en la siguiente imagen. Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.


En la siguiente pantalla se muestra el Mapeo de Tipos de Datos de las columnas.
Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.


En la siguiente pantalla se debe hacer check en la opción: Run immediately para ejecutar el proceso de importación.
Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.


La siguiente pantalla indica la configuración seleccionada para la importación.
Luego, tiene que presionar el botón: Finalizar, para poder terminar con la importación de un archivo plano.


La siguiente pantalla muestra el término de la operación y si fue realizada con éxito o error.


Y con esta operación solo resta consultar la tabla a donde se ha importado los datos y verificar que dichos datos se encuentren ahora en dicha tabla.



12/10/2019 10:11:00 a. m. Share:

0 comentarios:

Get updates in your email box
Complete the form below, and we'll send you the best coupons.

Deliver via FeedBurner
back to top