Ir para o conteúdo

SQL Server

O que é

Microsoft SQL Server é um sistema de gerenciamento de banco de dados relacional (RDBMS) desenvolvido pela Microsoft. É amplamente utilizado em ambientes corporativos e é a principal fonte de dados deste pipeline.

Versão utilizada

SQL Server 2022 Developer Edition — gratuita para desenvolvimento, idêntica à Enterprise em funcionalidades.

Por que SQL Server?

Este projeto utiliza SQL Server como fonte de dados para simular um cenário real de empresa, onde os dados operacionais estão armazenados em banco relacional e precisam ser exportados para um data lake para análise.

Configuração Docker

services:
  sqlserver:
    image: mcr.microsoft.com/mssql/server:2022-latest
    environment:
      SA_PASSWORD: "SqlServer@2022!"
      ACCEPT_EULA: "Y"
      MSSQL_PID: "Developer"
    ports:
      - "1433:1433"

Conexão com pyodbc

import pyodbc

conn_str = (
    'DRIVER={ODBC Driver 18 for SQL Server};'
    'SERVER=localhost,1433;'
    'DATABASE=SeguroDB;'
    'UID=sa;PWD=SqlServer@2022!;'
    'TrustServerCertificate=yes;'
)

conn = pyodbc.connect(conn_str)

TrustServerCertificate

Em ambiente Docker local, o SQL Server usa um certificado auto-assinado. O parâmetro TrustServerCertificate=yes desativa a validação do certificado — adequado apenas para desenvolvimento.

Banco SeguroDB

O banco SeguroDB simula o sistema de uma seguradora de veículos:

  • 11 tabelas relacionais com chaves estrangeiras
  • Dados de exemplo cobrindo regiões, estados, municípios, clientes, veículos, apólices e sinistros
  • Schema no namespace dbo (padrão SQL Server)

Extração das tabelas

A extração usa pandas.read_sql sobre a conexão pyodbc, que retorna um DataFrame pronto para serialização em CSV:

import pandas as pd

df = pd.read_sql('SELECT * FROM dbo.marca', conn)
df.to_csv('marca.csv', index=False)

Listagem dinâmica de tabelas

query = """
    SELECT TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_TYPE = 'BASE TABLE'
    ORDER BY TABLE_NAME
"""
df_tabelas = pd.read_sql(query, conn)
tabelas = df_tabelas['TABLE_NAME'].tolist()

Isso garante que o Notebook 01 extraia todas as tabelas existentes automaticamente, sem precisar listar os nomes manualmente.