Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Importar arquivo CSV para o SQL Server


Importação CSV do SQL Server baseada

1) Os dados do arquivo CSV podem ter , (vírgula) no meio (Ex:description), então como posso fazer a importação manipulando esses dados?

Solução

Se você estiver usando , (vírgula) como delimitador, não há como diferenciar entre uma vírgula como terminador de campo e uma vírgula em seus dados. Eu usaria um FIELDTERMINATOR diferente como || . O código se pareceria e isso lidará com vírgula e barra simples perfeitamente.

2) Se o cliente criar o csv a partir do excel, os dados que possuem vírgula serão incluídos dentro de " ... " (aspas duplas) [como o exemplo abaixo] então como a importação pode lidar com isso?

Solução

Se você estiver usando BULK insert, não há como lidar com aspas duplas, os dados serão inseridos com aspas duplas nas linhas. Depois de inserir os dados na tabela, você pode substituir essas aspas duplas por ' '.
update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')

3) Como rastreamos se algumas linhas têm dados incorretos, qual importação pula? (a importação pula linhas que não são importáveis)?

Solução

Para lidar com linhas que não são carregadas na tabela por causa de dados ou formato inválidos, pode ser manipulado usando a propriedade ERRORFILE, especifique o nome do arquivo de erro, ele gravará o erro de corte de linha no arquivo de erro. código deve ser parecido.
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
    )