Como carregar ficheiros CSV para Azure SQL no Azure Data Factory
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.