(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como carregar ficheiros CSV para Azure SQL no Azure Data Factory

João Barros 09 de August de 2026 3 min de leitura

Este tutorial mostra como carregar ficheiros CSV armazenados no Azure Blob Storage para uma tabela Azure SQL usando o Azure Data Factory, com transformações leves e tratamento de erros. Aprender a automatizar esta tarefa é útil para integrar dados de origem em pipelines ETL/ELT e garantir cargas repetíveis e observáveis.

Pré-requisitos

  • Conta Azure com permissões para criar recursos
  • Uma Azure Storage Account com um contentor e alguns ficheiros CSV
  • Uma instância Azure SQL Database com uma tabela de destino
  • Uma instância do Azure Data Factory (ou permissões para criar uma)
  • Azure Key Vault recomendado para segredos (opcional)

Passo 1: Criar Linked Services

Os Linked Services indicam ao ADF como ligar às fontes/destinos. Crie um Linked Service para o Azure Blob Storage e outro para o Azure SQL Database. Use a interface do ADF (Manage > Linked services) e teste a ligação. Se utilizar segredos, aponte para o Azure Key Vault ou use Managed Identity para maior segurança.

Passo 2: Criar Datasets para origem e destino

Crie um Dataset do tipo Azure Blob Storage apontando para os ficheiros CSV (padrão de nome ou pasta). Crie um Dataset do tipo Azure SQL Database apontando para a tabela de destino. No dataset CSV configure o delimitador, o encoding e se o ficheiro tem cabeçalho.

Passo 3: Pipeline de cópia com transformação leve

Crie um pipeline e adicione uma atividade Copy. No painel Source seleccione o Dataset CSV e active a opção de wildcard se for necessário carregar vários ficheiros (ex.: container/folder/*.csv). No painel Sink seleccione o Dataset Azure SQL. Para transformação leve (ex.: remover colunas ou converter tipos) utilize a secção Mapping ou adicione uma actividade Data Flow se precisar de lógica mais complexa.

{
  "name": "CopyFromBlobToSql",
  "properties": {
    "activities": [
      {
        "name": "CopyCSVtoSQL",
        "type": "Copy",
        "inputs": [ { "referenceName": "CSV_Dataset", "type": "DatasetReference" } ],
        "outputs": [ { "referenceName": "SQL_Dataset", "type": "DatasetReference" } ],
        "typeProperties": {
          "source": { "type": "DelimitedTextSource" },
          "sink": { "type": "SqlSink" }
        }
      }
    ]
  }
}

Passo 4: Tratar erros e registar falhas

Adicione uma actividade If Condition ou um pipeline de erro em cadeia: configure a propriedade Fault tolerance e a política de retry na actividade Copy. Para capturar linhas com erro, configure a Copy activity para escrever em modo "fault tolerant" com uma coluna de erro para um ficheiro separado no Blob Storage ou para uma tabela de auditoria no Azure SQL.

Passo 5: Parametrizar para reutilizar

Parametrizar o pipeline permite usar o mesmo fluxo para vários ficheiros ou pastas. Adicione parâmetros ao pipeline (ex.: containerName, folderPath, tableName) e passe-os para os Datasets via parâmetros. Na interface, nos Datasets use expressões para construir o caminho do ficheiro com @{pipeline().parameters.folderPath}.

// Exemplo de parâmetro no dataset (sintaxe de expressão na interface):
"path": "@concat(pipeline().parameters.containerName, '/', pipeline().parameters.folderPath)"

Verificar o resultado

Confirme o sucesso verificando o Monitor do Azure Data Factory: veja se a atividade Copy terminou com sucesso, quantas linhas foram lidas e escritas. Verifique a tabela Azure SQL para os novos registos e o Blob Storage para ficheiros de erro/auditoria. Consulte também o Output da actividade Copy para mensagens de erro detalhadas.

Conclusão

Agora tem um pipeline ADF funcional para carregar ficheiros CSV do Azure Blob Storage para Azure SQL com parametrização e tratamento básico de erros. Próximos passos: adicionar Data Flows para transformações complexas, usar Mapping para corresponder colunas com tipos, e automatizar com triggers. Dica: comece por testar com ficheiros pequenos e activar logging detalhado antes de escalar.