sql >> Base de Datos >  >> RDS >> Sqlserver

Importar archivo CSV a SQL Server

Importación CSV de SQL Server basada

1) Los datos del archivo CSV pueden tener , (coma) entre (Ej:descripción), entonces, ¿cómo puedo importar el manejo de estos datos?

Solución

Si estás usando , (coma) como delimitador, entonces no hay forma de diferenciar entre una coma como terminador de campo y una coma en sus datos. Usaría un FIELDTERMINATOR diferente como || . El código se vería así y esto manejará la coma y la barra inclinada perfectamente.

2) Si el cliente crea el csv desde Excel, los datos que tienen una coma se incluyen dentro de " ... " (comillas dobles) [como el siguiente ejemplo] entonces, ¿cómo puede manejar esto la importación?

Solución

Si está utilizando la inserción BULK, entonces no hay forma de manejar las comillas dobles, los datos se insertarán con comillas dobles en las filas. Después de insertar los datos en la tabla, puede reemplazar esas comillas dobles con ' '.

update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')

3) ¿Cómo hacemos un seguimiento si algunas filas tienen datos incorrectos, que se omite importar? (¿Se importan omite filas que no son importables)?

Solución

Para manejar filas que no se cargan en la tabla debido a datos o formato no válidos, podría manejarse usando la propiedad ERRORFILE, especifique el nombre del archivo de error, escribirá la fila que tiene el error en el archivo de error. debería verse el código.

BULK INSERT SchoolsTemp
    FROM 'C:\CSVData\Schools.csv'
    WITH
    (
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'C:\CSVDATA\SchoolsErrorRows.csv',
    TABLOCK
    )