A função BULK INSERT no SQL Server é uma ferramenta poderosa para importar grandes volumes de dados de arquivos externos para tabelas no banco de dados.
💡 Principais vantagens do BULK INSERT:
✅ Alta performance na importação de dados.
✅ Flexibilidade com diversas opções de configuração.
✅ Capacidade de lidar com grandes volumes de informação.
✅ Registro de erros para controle e auditoria.
Neste artigo, veremos a estrutura básica do BULK INSERT, seus principais parâmetros e um exemplo prático.
📌 Estrutura do BULK INSERT
A sintaxe básica do BULK INSERT é:
BULK INSERT NomeDaTabela
FROM 'C:\Caminho\Para\Arquivo.csv'
WITH (
FIELDTERMINATOR = ',', -- Delimitador de campos
ROWTERMINATOR = '\n', -- Delimitador de linhas
FIRSTROW = 2, -- Iniciar importação da segunda linha
BATCHSIZE = 100, -- Tamanho do lote (número de linhas por lote)
CHECK_CONSTRAINTS, -- Verificar restrições de integridade
CODEPAGE = 'ACP', -- Página de código
ERRORFILE = 'C:\Caminho\Para\Erros.txt', -- Arquivo de erros
MAXERRORS = 10, -- Número máximo de erros permitidos
FIRE_TRIGGERS, -- Executar gatilhos
KEEPIDENTITY, -- Manter valores de identidade
DATAFILETYPE = 'widechar', -- Tipo de arquivo de dados
TABLOCK, -- Bloqueio da tabela
FORMATFILE = 'C:\Caminho\Para\Format.xml' -- Arquivo de formato
);
📂 Exemplo Prático de BULK INSERT
Imagine que temos um arquivo CSV chamado ExemploDados.csv, com o seguinte conteúdo:
ID,Nome,Sobrenome,Idade
1,João,Silva,30
2,Maria,Santos,25
3,Carlos,Rodrigues,40
Queremos importar esses dados para uma tabela chamada ExemploTabela.
🔹 Criando a Tabela no SQL Server
Antes de importar os dados, a tabela precisa estar criada no banco de dados:
CREATE TABLE ExemploTabela (
ID INT PRIMARY KEY,
Nome NVARCHAR(50),
Sobrenome NVARCHAR(50),
Idade INT );
🔹 Comando BULK INSERT
Agora, utilizamos o BULK INSERT para importar os dados:
BULK INSERT ExemploTabela
FROM 'C:\Caminho\Para\ExemploDados.csv'
WITH (
FIELDTERMINATOR = ',', -- Define a vírgula como separador de colunas
ROWTERMINATOR = '\n', -- Indica que cada linha termina com uma nova linha
FIRSTROW = 2, -- Ignora a primeira linha (cabeçalho)
ERRORFILE = 'C:\Caminho\Para\Erros.txt', -- Registra linhas com erro
MAXERRORS = 5, -- Interrompe a importação se houver mais de 5 erros
TABLOCK -- Bloqueia a tabela para melhorar o desempenho );
Após a execução, os dados serão carregados na ExemploTabela.
⚙️ Explicação dos Principais Parâmetros
🔹 FIELDTERMINATOR = ',' → Define que os campos no arquivo CSV são separados por vírgula (,).
🔹 ROWTERMINATOR = '\n' → Especifica que cada linha do arquivo termina com uma nova linha.
🔹 FIRSTROW = 2 → Indica que a importação começa a partir da segunda linha, ignorando o cabeçalho.
🔹 BATCHSIZE = 100 → Importa 100 linhas por lote, útil para grandes volumes de dados.
🔹 CHECK_CONSTRAINTS → Verifica restrições de integridade durante a importação.
🔹 CODEPAGE = 'ACP' → Define a página de código para suporte a caracteres especiais.
🔹 ERRORFILE = 'C:\Caminho\Para\Erros.txt' → Cria um arquivo de log para armazenar linhas que falharem.
🔹 MAXERRORS = 10 → Permite até 10 erros antes de interromper o processo.
🔹 FIRE_TRIGGERS → Ativa os gatilhos da tabela ao inserir os dados.
🔹 KEEPIDENTITY → Mantém valores da coluna de identidade do arquivo original.
🔹 TABLOCK → Bloqueia a tabela para aumentar a velocidade da importação.
🔹 FORMATFILE = 'C:\Caminho\Para\Format.xml' → Usa um arquivo de formato para importar dados estruturados de maneira complexa.
🛠️ Quando Utilizar BULK INSERT?
📌 Grandes volumes de dados: Quando precisa importar milhares/milhões de registros rapidamente.
📌 Carga de dados automatizada: Quando a importação de arquivos CSV faz parte de um processo recorrente.
📌 Integração de sistemas: Quando os dados vêm de outras fontes e precisam ser inseridos no SQL Server.
📌 ETL (Extract, Transform, Load): Em processos de transformação e carregamento de dados para análise.
🎯 Conclusão
O BULK INSERT é uma ferramenta fundamental para administradores de banco de dados e desenvolvedores que precisam importar dados de forma rápida, segura e eficiente.
✅ Alta performance para importação de dados.
✅ Controle detalhado com parâmetros personalizáveis.
✅ Registro de erros para garantir a integridade dos dados.
Com esse conhecimento, você pode otimizar processos de importação no SQL Server e melhorar a performance do banco de dados. 🚀