dbSlice ou pgloader?
O pgloader é um carregador gratuito e open source que também lê o SQL Server e converte o esquema num só comando. O dbSlice é para equipes que querem uma interface Windows com prévia dos dados, execuções Upsert ou incrementais toda noite até a virada, uma comparação chave a chave antes da troca e cópias mascaradas para desenvolvimento e teste. Veja a página completa alternativa ao pgloader.
O que o dbSlice faz
- Lê o SQL Server em lotes pequenos, para o banco em uso continuar atendendo os usuários.
- Grava no PostgreSQL em massa com COPY nas cargas iniciais e completas.
- Mostra o DDL do destino. Se a tabela não existe no PostgreSQL, o dbSlice para e mostra um
CREATE TABLEtraduzido do SQL Server para o seu DBA revisar e rodar. Por padrão, ele não cria nada nos seus bancos. - Protege os ids. Depois que as linhas são copiadas com os valores de
IDENTITY, o dbSlice pode avançar a sequence do PostgreSQL para depois do maior id, ou mostrar o comando para o seu DBA rodar. - Exportar em vez de carregar: quando você só precisa de um arquivo, o mesmo app exporta uma tabela do SQL Server para CSV, JSON, XML ou HTML.
Migrar de SQL Server para PostgreSQL: cinco detalhes para planejar
1. datetimeoffset. É sugerido como TIMESTAMP, e os valores são gravados em UTC. Se a aplicação precisa do fuso, declare a coluna como TIMESTAMPTZ no CREATE TABLE.
2. bit. Vira BOOLEAN; então 1 e 0 chegam como true e false. Consultas que comparam com = 1 precisam mudar.
3. nvarchar(max), ntext e xml. São sugeridos como TEXT. O texto do PostgreSQL é Unicode, então o prefixo N não é necessário; declare XML você mesmo se consultar como XML.
4. rowversion / timestamp. É binário no SQL Server e é sugerido como BYTEA. Não é uma data: deixe fora da cópia, a menos que a aplicação o leia.
5. Maiúsculas e collation. O SQL Server costuma comparar texto sem diferenciar maiúsculas; o PostgreSQL, por padrão, diferencia. Planeje ILIKE, citext ou uma collation que não diferencie maiúsculas onde a aplicação depende disso.
Avalie antes: relatório gratuito →
Comparando ferramentas? Veja as melhores ferramentas para migrar SQL Server para PostgreSQL →
Passo a passo: converter uma tabela de SQL Server para PostgreSQL
- Conecte no SQL Server e no PostgreSQL.
- Escolha a tabela de origem (ou um SELECT) e a tabela de destino.
- Escolha a coluna-chave usada para casar as linhas.
- Escolha o modo: Initial load na primeira vez, depois Upsert ou Insert new.
- Confira antes de gravar: o Record Diff compara as chaves dos dois lados; as conferências na tela rodam antes de qualquer gravação.
- Rode, ou salve como job e agende pela CLI. O Replicador copia uma lista de tabelas numa execução, as pais antes das filhas.
Mantenha os dois sincronizados até a virada
Agende um job Upsert toda noite. Com uma coluna que só cresce (updated_at ou o id IDENTITY), cada execução lê só as linhas acima do último valor visto. Exclusões não são detectadas pelas execuções incrementais; por isso, compare ou recarregue antes da troca. Mais sobre a rotina noturna: Sincronizar SQL Server com PostgreSQL.
Cópias mascaradas para desenvolvimento
O mesmo job pode ofuscar e-mails, documentos e outras colunas sensíveis no caminho, mantendo chaves e chaves estrangeiras intactas, para um banco de teste em PostgreSQL receber dados realistas sem os valores reais.
Mover dados entre SQL Server e PostgreSQL, com qualquer um dos dois como origem
O mesmo app move dados no outro sentido: PostgreSQL para SQL Server. Ele também cobre SQL Server para MySQL, MariaDB, Oracle, Firebird, SQLite ou InterSystems IRIS. Veja também MySQL para PostgreSQL e Oracle para PostgreSQL.
Perguntas frequentes
O dbSlice converte stored procedures, triggers ou views?
Não. Ele move dados; o código T-SQL precisa ser reescrito para o PostgreSQL.
Preciso de CDC ou do SQL Server Agent?
Não. O dbSlice lê as tabelas com consultas comuns e roda como job pela própria CLI ou pelo Agendador de Tarefas do Windows.
Consigo conferir que nada está faltando antes da troca?
Sim. O Compare lê os dois lados chave a chave e salva a lista completa de chaves divergentes num arquivo.
Existe versão gratuita?
Sim, na Microsoft Store: ela conecta, navega, compara e exporta para CSV. Gravar num destino exige uma licença Desktop ou Server.