Está en la página 1de 2

Uso de Bulk Insert

En ms de una ocasin nos fue necesario importar datos en formato CSV a una tabla en nuestro servidor de base de datos SQL Server, despus de esta ltima vez me pareci una buena idea hacer un muy breve comentario de una de las posibilidades disponibles, as es que presento al comando BULK INSERT, el cual permite llevar a cabo esta operacin.

Antes que nada debemos suponer que poseemos la siguiente tabla:

El siguiente archivo CSV:


1 1,Cabecera1,20001211,20001211 22:10:30,41422.66, 22.22 2 2,Cabecera2,20001212,20001212 22:10:32,1234567.123456, 22.4444

Y la clara intencin de copiar la informacin desde el archivo CSV hacia la tabla en cuestin. Deberemos entonces utilizar el siguiente comando:
1 BULK INSERT 2 Cabecera 3 FROM 4 'C:\....\archivo.csv' 5 WITH ( 6 FIELDTERMINATOR= ',', 7 8 ); ROWTERMINATOR = '\n'

Donde hemos especificado origen (el path al archivo CSV) destino (la tabla Cabecera) y los separadores de filas y columnas en los argumentos ROWTERMINATOR y FIELDTERMINATOR.

El resultado de la operacin generar el siguiente resultado:

Donde puede verse que los datos han sido agregados aunque algunos de ellos (IngresoAnual y Numero) han quedado truncados en la tabla Cabecera al no poder ser representados en forma completa en los tipos de datos destino. Si se produce algn error de conversin de datos durante la importacin la fila ser omitida, el mismo comportamiento utilizar el comando si se viola la constraint NOT NULL. En otros tipos de errores, como por ejemplo, violacin de la constraint UNIQUE, la importacin fallar, cabe mencionar que para el caso particular de las constraints CHECK y FOREIGN KEY, las mismas sern por defecto omitidas, al menos que se utilice el parmetro CHECK_CONSTRAINTS en la sentencia BULK INSERT para especificar lo contrario. El comando BULK INSERT posee adems de los pocos parmetros que hemos visto una diversa cantidad de los mismos, como por ejemplo FIRSTROW y LASTROW que permite especificar la fila inicial y final de copia, FIRE_TRIGGERS que permite indicar si se dispararn los triggers de las tablas durante la importacin de datos, KEEPIDENTITY que permite especificar de qu manera se manejarn la columnas identity durante la importacin y KEEPNULLS que indica si las columnas vacas debern conservar el valor NULL. Dejo para quien este interesado el siguiente link donde podrn obtener ms informacin del comando, de todos los argumentos disponibles (que son muchos ms que los que hemos mencionado) y de su uso: http://technet.microsoft.com/es-es/library/ms188365.aspx

También podría gustarte