SQL Server: Bulk Insert 🚀

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.
    🔹 TABLOCKBloqueia 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. 🚀

Data de Publicação: 24-10-2023

Categoria: SQL Server