migrating-oracle-to-postgres-data-access-code
Ajuda seu agente a migrar código de acesso a dados do Oracle para o PostgreSQL em projetos .NET/C#. Ele substitui pacotes, reescreve o uso de conexão e adapta strings de conexão.
O que ela faz
Este código ajuda a mudar um programa de computador de usar um banco de dados Oracle para um banco de dados PostgreSQL. Ele ajusta as partes do código que se comunicam com o banco de dados.
Quando usar
- ✓Quando você está migrando um projeto .NET de Oracle para PostgreSQL.
- ✓Ao atualizar as conexões e comandos do banco de dados no código.
- ✓Para garantir que os tipos de dados e chamadas de procedimentos funcionem corretamente no novo banco.
Exemplo do que pedir para a IA
“Migre o código de acesso a dados do meu projeto .NET de Oracle para PostgreSQL, seguindo o checklist de migração.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
O código substitui pacotes antigos do Oracle por novos para PostgreSQL, ajusta como o programa se conecta ao banco de dados e corrige as diferenças entre os comandos e tipos de dados dos dois bancos.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add github/awesome-copilot --skill migrating-oracle-to-postgres-data-access-codeOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/migrating-oracle-to-postgres-data-access-code/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Migrando Código de Acesso a Dados .NET de Oracle para PostgreSQL
Migre a camada de acesso a dados C# de um projeto de cópia única .Postgres de Oracle (Oracle.ManagedDataAccess) para PostgreSQL (Npgsql). Trabalhe item por item através de Reports/{ProjectName}/MigrationChecklist.md.
Pré-requisitos
- A cópia do projeto
.Postgresexiste (criada na configuração da Fase 5). Reports/{ProjectName}/MigrationChecklist.mdexiste e é a fonte da verdade para o que mudar.Reports/{ProjectName}/OracleRiskAnalysis.mdexiste para referências cruzadas de diferenças comportamentais.
Fluxo de Trabalho
Progress:
- [ ] Step 1: Replace NuGet packages
- [ ] Step 2: Update connection string configuration
- [ ] Step 3: Rewrite ADO.NET type references
- [ ] Step 4: Fix DbType mappings
- [ ] Step 5: Migrate stored procedure invocation
- [ ] Step 6: Address Oracle-specific SQL and syntax
- [ ] Step 7: Build and verify
Passo 1: Substituir pacotes NuGet
No .csproj do projeto .Postgres:
- Remover:
Oracle.ManagedDataAccess.Core,Oracle.EntityFrameworkCore(e quaisquer outros pacotesOracle.*) - Adicionar:
Npgsql(para ADO.NET) e/ouNpgsql.EntityFrameworkCore.PostgreSQL(para EF Core) - Mantenha o "pinning" de versão consistente com a versão .NET de destino; não introduza versões de pacotes mais novas do que as que a solução já usa para pacotes semelhantes.
- Se abstrações
System.Data(IDbConnection,IDbCommand) forem usadas em todo o projeto, o código de nível superficial pode precisar de menos alterações — identifique-as primeiro.
Passo 2: Atualizar configuração da string de conexão
- Localize a string de conexão Oracle em
appsettings.json,appsettings.{env}.json,web.config,app.configou configuração de variável de ambiente. - Substitua por uma string de conexão compatível com Npgsql:
Host=localhost;Port=5432;Database=mydb;Username=myuser;Password=mypassword - Não codifique credenciais diretamente — use o mesmo mecanismo de configuração já em uso (por exemplo, variáveis de ambiente, gerenciador de segredos,
IConfiguration). - Atualize quaisquer chaves de string de conexão nomeadas apenas se fossem específicas do Oracle (por exemplo,
OracleConnection). Prefira manter o mesmo nome de chave para minimizar as alterações na configuração do aplicativo.
Passo 3: Reescrever referências de tipo ADO.NET
Substitua tipos ADO.NET específicos do Oracle por equivalentes Npgsql:
| Tipo Oracle | Substituição Npgsql |
|---|---|
OracleConnection |
NpgsqlConnection |
OracleCommand |
NpgsqlCommand |
OracleDataReader |
NpgsqlDataReader |
OracleDataAdapter |
NpgsqlDataAdapter |
OracleParameter |
NpgsqlParameter |
OracleTransaction |
NpgsqlTransaction |
OracleException |
NpgsqlException |
OracleDbType |
NpgsqlDbType (do namespace NpgsqlTypes) |
Atualize as diretivas using de acordo (using Oracle.ManagedDataAccess.Client → using Npgsql).
Se a base de código usar abstrações IDbConnection/IDbCommand registradas via DI, atualize apenas o registro DI e a string de conexão — o código consumidor pode não precisar de alterações.
Passo 4: Corrigir mapeamentos DbType e NpgsqlDbType
Os tipos de parâmetro Oracle não são mapeados 1:1 para Npgsql. Revise cada OracleParameter (agora NpgsqlParameter) que define um tipo explícito:
| Tipo Oracle | Notas |
|---|---|
OracleDbType.Varchar2 |
Use NpgsqlDbType.Varchar ou omita (Npgsql infere do valor) |
OracleDbType.Clob |
Use NpgsqlDbType.Text |
OracleDbType.Number |
Use NpgsqlDbType.Numeric ou NpgsqlDbType.Integer dependendo da precisão |
OracleDbType.Date |
Use NpgsqlDbType.Date (apenas data) ou NpgsqlDbType.Timestamp (se o componente de hora for usado) |
OracleDbType.TimeStamp |
Use NpgsqlDbType.Timestamp |
OracleDbType.RefCursor |
Use NpgsqlDbType.Refcursor — veja Passo 5 |
OracleDbType.Char |
Use NpgsqlDbType.Char |
Para parâmetros onde o Oracle inferiu o tipo do valor, o Npgsql também infere — a definição explícita de tipo geralmente é desnecessária e pode ser removida.
Passo 5: Migrar invocação de stored procedure
A invocação de stored procedure Oracle e PostgreSQL difere significativamente:
- Tipo de comando: Mantenha
CommandType.StoredProcedurepara chamadas de função. Para procedimentos que usam parâmetrosOUT, o PostgreSQL requerCommandType.Textcom sintaxeCALL proc_name(...)em algumas versões do Npgsql — verifique em relação à versão Npgsql de destino. - Tratamento de RefCursor: Oracle retorna ref cursors como parâmetros de saída; PostgreSQL os retorna de forma diferente:
- Para
RETURNS TABLE/RETURNS SETOF, useExecuteReader()diretamente — nenhum parâmetro de cursor é necessário.
- Para
…
Perguntas frequentes
O que são pacotes NuGet?
São como 'caixas de ferramentas' que adicionam funcionalidades extras ao seu programa. Este código troca as caixas de ferramentas do Oracle pelas do PostgreSQL.
O que é uma string de conexão?
É como o endereço e as credenciais que o programa usa para encontrar e acessar o banco de dados. O código atualiza esse endereço para o novo banco PostgreSQL.
Por que os tipos de dados precisam ser corrigidos?
Bancos de dados diferentes entendem tipos de dados (como texto, números, datas) de maneiras ligeiramente diferentes. O código garante que os tipos corretos sejam usados no PostgreSQL.
Detalhes
Descrição original do autor
Migrates .NET/C# data access code from Oracle to PostgreSQL (Npgsql). Replaces Oracle NuGet packages, rewrites OracleConnection/OracleCommand/OracleDataReader usage, fixes DbType mappings, updates stored procedure invocation patterns, and adapts connection string configuration. Use when migrating the application code layer of a .NET project during an Oracle-to-PostgreSQL database migration.
repo: github/awesome-copilot
Popularidade
- Estrelas no GitHub
- 40 mil
- Posição no ranking
- #5237
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
acquire-codebase-knowledge
Ajuda seu agente a entender e documentar um projeto de código existente. É útil para novas pessoas entrarem no projeto ou para ter uma visão geral da arquitetura.
github/awesome-copilot
acreadiness-assess
Faz seu agente avaliar a prontidão de um projeto para IA e gerar um relatório. É útil para entender o quão bem um projeto está preparado para usar ferramentas de IA.
github/awesome-copilot
acreadiness-generate-instructions
Ajuda seu agente a criar instruções para ferramentas de IA baseadas em uma avaliação. É útil para melhorar a forma como a IA interage com o código e fecha lacunas identificadas.
github/awesome-copilot
acreadiness-policy
Faz seu agente ajudar a definir ou aplicar políticas para avaliação de projetos de IA. É útil para padronizar a forma como os projetos são avaliados e garantir conformidade.
github/awesome-copilot
Skills parecidas
api-connector-builder
Faz seu agente construir novas conexões com APIs seguindo o padrão já existente. Use quando precisar adicionar mais uma integração sem criar um novo jeito de fazer.
affaan-m/ECC
api-design
Ajuda seu agente a projetar APIs REST seguindo as melhores práticas. É útil para definir como as APIs se comunicam, como os erros são mostrados e como organizar os dados.
affaan-m/ECC
backend-patterns
Ajuda seu agente com padrões de arquitetura do lado do servidor e otimização de banco de dados. É útil para construir ou revisar o código que roda no servidor.
affaan-m/ECC