Buscar este blog

26 enero 2009

Importar datos a SQL Server

Comparto una sencilla instrucción T-SQL para importar datos desde archivos CSV (Comma-Separated Values) a una tabla de SQL Server 2K5, CSV es ampliamente utilizado y muchos programas exportan a este formato como por ejempolo Excel aunque el separador puede diferir de una coma y ser cualquier caracter. Con BULK INSERT se puede utilizar un archivo XML que describa el esquema y los tipos de datos a importar. Para mas detalles ver esto.
En este ejemplo utilizo el codigo de página de caracteres 850 "Multilingual (Latin-1)" (Western European languages) que mapea en su conjunto de caracteres a las letras acentuadas y la 'ñ' necesarios en nuestro idioma y es el set que utilizan la mayoría de los sistemas legacy bajo DOS desde donde solemos importar los datos. También podemos ver que le indico que el delimitador de campo es el ';' y que los registros terminan con nueva línea '\n'.
USE <DB>
BULK INSERT <Tabla>
FROM '<Archivo>.csv'
WITH
(
CODEPAGE = '850',
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n',
KEEPNULLS
)
GO
Nota: En la instrucción anterior <Tabla> debe tener la misma cantidad de campos y con un tipo de datos compatible al origen de datos, además esta puede ser una tabla temporal intermedia para un proceso de importación más elaborado.
Espero que les sirva, saludos!

1 comentario:

FRANCISCO dijo...

Eso es muy util che, yo llegué a usar mucho porque te saca de apuros ! a la hora de importar datos que teniamos suelto en un archivo plano, pero en mysql :D es mas facil! y se ve menos engorroso que en T-SQL ;)