Mais
Importar ficheiro CSV para o SQL Server
Estou procurando ajuda para importar um arquivo .csv
para o SQL Server utilizando BULK INSERT
e tenho algumas perguntas básicas.
Issues:
-
Os dados do arquivo CSV podem ter
,
(vírgula) no meio (Ex: descrição), então como eu posso fazer a importação manuseando esses dados? -
Se o cliente cria o CSV a partir do Excel, então os dados que têm vírgula são incluídos dentro de
""
(aspas duplas) [como o exemplo abaixo], então como a importação pode lidar com isso? -
Como rastreamos se algumas filas têm dados ruins, quais saltos de importação? (as linhas de saltos de importação que não são importáveis)
Aqui está a amostra do CSV com cabeçalho:
Name,Class,Subject,ExamDate,Mark,Description
Prabhat,4,Math,2/10/2013,25,Test data for prabhat.
Murari,5,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test."
sanjay,4,Science,,25,Test Only.
E instrução SQL a importar:
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
TABLOCK
)
168
3
Importação SQL Server CSV Baseada
**Solução***
Se você're utiliza
,
(vírgula) como um delimitador, então não há como diferenciar entre uma vírgula como terminador de campo e uma vírgula nos seus dados. Eu utilizaria umFIELDTERMINADOR
diferente como|||
. O código ficaria parecido e isto lidaria perfeitamente com vírgula e uma única barra.**Solução***
Se você'estiver usando a inserção BULK, então não há como lidar com aspas duplas, os dados serão inseridas com aspas duplas nas linhas. Depois de inserir os dados na tabela você poderia substituir essas aspas duplas por '` `'.
**Solução***
Para lidar com linhas que são't carregadas na tabela por causa de dados ou formato inválidos, poderia ser handle usando ERRORFILE property, especifique o nome do arquivo de erro, ele irá escrever as linhas ter erro no arquivo de erro. código deve ser parecido.
A melhor, mais rápida e mais fácil maneira de resolver o problema da vírgula nos dados é usar o Excel para salvar um arquivo separado por vírgula após ter configurado o Windows' configuração do separador de lista para algo diferente de uma vírgula (como um pipe). Isto irá então gerar um arquivo separado por pipe (ou qualquer outro) para você que você pode então importar. Isto é descrito aqui.
Primeiro você precisa importar o arquivo CSV para a Tabela de Dados
Então você pode inserir linhas em massa usando SQLBulkCopy