post icon

Importar datos de un fichero CSV en SQL Server

Muchas veces en la práctica vamos a encontrarnos con la siguiente situación, nos envían de algún lugar datos en un fichero CSV (Fichero que tiene valores separados por comas), y necesitemos almacenar estos en nuestra base de datos, los motivos pueden ser varios, importación de datos de alguna base datos que no solamente puede ser SQL Server mismo, algún programa externo a nosotros genera este tipo de ficheros, por cuestión de interoperabilidad con otras empresas se decide utilizar este mecanismo, en fin, cualquier motivo resulta válido para el caso.

El punto más bien es utilizar un mecanismo más rápido de inserción de los mismos a nuestra BD, que tener que programar una aplicación que haga este trabajo. SQL Server tiene su propia herramienta que hace esto por nosotros, se lo puede hacer de manera gráfica como por línea de comandos. Evidentemente no veremos el modo gráfico porque es demasiado intuitivo que no requiere explicación, pero si sería interesante conocer como esa pantalla gráfica hace “por debajo” este trabajo, que nosotros mismo podemos hacerlo.

El comando BULK nos ayudara, veamos un ejemplo práctico. Creemos la siguiente tabla:

1
2
3
4
5
6
7
8
9
USE BD
CREATE TABLE CSVPersona
(
IdPersona INT,
Nombre VARCHAR(40),
Apellidos VARCHAR(40),
Nacimiento DATETIME
);
GO

Luego necesitamos crear nuestro fichero Personas.CSV con los siguientes datos:

1,OMAR,ACUÑA,1980/12/14
2,MARIA,VILLALBA,1986/03/02
3,LUIS,FERREIRA,2010/05/02
4,ABRAHAM,RODRIGUEZ,1964/05/12

Y es aqui donde entra en acción SQL Server insertando los datos del siguiente modo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- Seteamos el formato de fecha para que funcione correctamente este fichero
SET DATEFORMAT YMD;
GO
 
-- Procedemos a la importacion
BULK
INSERT CSVPersona
FROM 'D:\PERSONAS.CSV'
WITH
(
-- seteamos el separador de campos
FIELDTERMINATOR = ',',
--seteamos el separador de registro
ROWTERMINATOR = '\n'
);
GO
 
-- Verificamos los datos
select * from csvpersona

4 Comentarios

Deja tu Comentario
  1. Gerardo MEXICO Safari Windows
    7 diciembre 2011 at 01:34 #

    Que tal.

    Estoy haciendo un sistema con MySQL y Java y necesito importar los datos de 3200 registros a través de un archivo de comas. Este código lo podría utilizar en un pequeño frame de Java verdad?

    Saludos!

Trackbacks/Pingbacks

  1. Exportar Datos desde SQL Server a CSV | DevTroce.com UNITED STATES WordPress - 24 octubre 2011

    [...] MS SQL Server no tiene un comando nativo TSQL que sirva para exportar directamente datos como el BULK para importarlos, aunque eso no significa que no tenga una herramienta que sirva para tal [...]

  2. Leer ficheros .CSV con Java | DevTroce.com WordPress - 4 agosto 2010

    [...] en devtroce, ya hemos visto como trabajar con éste tipo de archivos en otros artículos: SQL Server, MySQL, Delphi. Ya que Java nos ofrece la ventaja de la multiplataformidad, para ello necesitaremos [...]

Responder