Pular para o conteúdo
Skillpedia
APIs e servidores (backend)40 mil · #5237

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

https://github.com/github/awesome-copilot/blob/main/skills/migrating-oracle-to-postgres-data-access-code/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/github/awesome-copilot/blob/main/skills/migrating-oracle-to-postgres-data-access-code/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-code

Ou 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.md
Conteú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 .Postgres existe (criada na configuração da Fase 5).
  • Reports/{ProjectName}/MigrationChecklist.md existe e é a fonte da verdade para o que mudar.
  • Reports/{ProjectName}/OracleRiskAnalysis.md existe 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 pacotes Oracle.*)
  • Adicionar: Npgsql (para ADO.NET) e/ou Npgsql.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.config ou 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.StoredProcedure para chamadas de função. Para procedimentos que usam parâmetros OUT, o PostgreSQL requer CommandType.Text com sintaxe CALL 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, use ExecuteReader() diretamente — nenhum parâmetro de cursor é necessário.

…

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas