El siguiente ejemplo muestra cómo hacer una importación desde un archivo delimitado (que puede ser un CSV - un archivo delimitado por comas) directo a una tabla de SQL Server. La solución es bastante rápida y sólo tenemos que tener la ruta al archivo y recordar la sintáxis de la orden correspondiente. En este caso lo haremos a través de una instrucción Bulk Insert de Transact SQL.
Si la tabla aún no existe deberemos crearla. Por ejemplo:
USE TestData
GO
CREATE TABLE CSVTest
(ID INT,
FirstName VARCHAR(40),
LastName VARCHAR(40),
BirthDate SMALLDATETIME)
GO
Examinemos el contenido del archivo CSV que se usará para este ejemplo:
1,James,Smith,19750101
2,Meggie,Smith,19790122
3,Robert,Smith,20071101
4,Alex,Smith,20040202
Ahora, suponiendo que el archivo está ubicado en c:\csvtest.txt, la orden que utilizaremos es la siguiente:
BULK
INSERT CSVTest
FROM 'c:\csvtest.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
Debemos verificar el contenido de la tabla a través de un SELECT, especialmente si el número de registros que se importó es el correcto. Esto es porque si hay un error en un registro el Bulk Insert simplemente se lo salta, por lo que es importante realizar esta verificación para detectar errores.
¿Qué pasa si nuestro archivo no es un CSV sino que usa otro delimitador, por ejemplo pipes? Entonces cambiamos el delimitador en el parámetro FIELDTERMINATOR. Por ejemplo, si usamos pipes pondremos '|' en ese campo. Eso es todo.
Espero que este ejemplo te sirva de algo para un caso de emergencia.