Como usar o PowerShell no PostgreSQL

Olá, pessoal!

Neste artigo, você aprenderá a conectar o PowerShell ao PostgreSQL, criar e gerenciar sessões, executar consultas SQL e trabalhar com os objetos retornados. Além disso, como o PowerShell está disponível para Windows, Linux e macOS, você pode utilizar os mesmos comandos para administrar diferentes ambientes e, assim, reduzir as variações operacionais entre os sistemas.

Para conectar o PowerShell ao PostgreSQL, utilizaremos o Posh-PG, um projeto experimental que disponibiliza comandos específicos, como New-PgSession e Invoke-PgQuery. A principal diferença em relação a módulos baseados apenas em comandos genéricos é, justamente, a possibilidade de trabalhar com cmdlets próprios para criar sessões e executar operações no PostgreSQL, mantendo, dessa forma, uma experiência mais próxima do padrão de uso do PowerShell.

Com o Posh-PG, podemos, portanto, utilizar comandos específicos do PowerShell para criar sessões, executar consultas e trabalhar com os resultados retornados pelo PostgreSQL.

Como instalar o Posh-PG

O Posh-PG ainda está em fase experimental. Por esse motivo, execute inicialmente os exemplos deste artigo em um ambiente de laboratório. Além disso, antes de adotar o módulo em produção, realize uma avaliação técnica prévia.

Validar os pré-requisitos

  • Antes de iniciar, confirme se o PowerShell está instalado e acessível pelo comando pwsh, se o Git está disponível para clonar o repositório e, além disso, se há uma versão do SDK do .NET compatível com a solução do projeto.
  • Clonar o repositório do GitHub do projeto;
  • Por fim, verifique se o SDK do .NET é compatível com a solução do projeto.

Instalar o Posh-PG

  • Inicialmente, você realizará a instalação em três etapas: primeiro, clone o repositório e acesse o diretório do projeto; em seguida, compile a solução; por fim, importe o arquivo do módulo gerado pelo processo de build.

git clone https://github.com/MikuZZZ/Posh-PG.git

Set-Location ./Posh-PG

  • Compile a solução com o comando abaixo. Ao final, confirme se o processo foi concluído sem erros e se o arquivo PoshPG.dll foi gerado no diretório utilizado na etapa de importação.

dotnet build

  • Importar o Módulo.
  • $modulePath = Join-Path $PWD ‘PoshPG/bin/Debug/netcoreapp3.1/PoshPG.dll’

Import-Module $modulePath

Como usar o módulo

Criar conexão com o PostgreSQL

Antes de executar consultas, é necessário criar uma sessão com o PostgreSQL. Para isso, vamos utilizar o comando New-PgSession e informar os parâmetros de conexão descritos a seguir:

  • Name: nome utilizado para identificar a sessão. Esse valor poderá ser informado posteriormente em comandos como Get-PgSession, Set-PgDefaultSession e Invoke-PgQuery;
  • Endpoint: endereço do servidor PostgreSQL, que pode ser informado como nome DNS, nome do host ou endereço IP;
  • Username: usuário que será utilizado para autenticação na instância ou no banco de dados PostgreSQL;
  • Password: senha do usuário utilizado na conexão. Em ambientes reais, evite armazenar credenciais diretamente no script e utilize um mecanismo seguro de gerenciamento de segredos;
  • Database: O banco de dados que será usado nesta sessão.

New-PgSession `

-Name ‘dev’ `

-Endpoint ‘localhost’ `

-Username ‘postgres’ `

-Password ‘<senha-temporaria-de-laboratorio>’ `

-Database ‘postgres’

Após estabelecer a conexão, use o comando “Get-PgSession” para verificar as sessões abertas. Esse comando lista todas as sessões registradas no PowerShell.

Para definir uma sessão como padrão, utilize o comando Set-PgDefaultSession. Dessa forma, os comandos que não receberem uma sessão explicitamente utilizarão automaticamente a conexão selecionada.

Executar uma consulta

Para executar uma consulta, utilizaremos o comando Invoke-PgQuery. Esse cmdlet envia ao PostgreSQL o texto SQL informado pelo usuário e, em seguida, retorna o resultado como um objeto do PowerShell.

  • Session: nome da sessão criada por New-PgSession. Quando esse parâmetro não for informado, o comando utilizará a sessão padrão configurada com Set-PgDefaultSession;
  • Text: instrução SQL que será enviada e executada na sessão PostgreSQL selecionada.

O comando possui outros parâmetros opcionais. Portanto, para executar a consulta apresentada neste exemplo, informe a sessão e, em seguida, o texto SQL que será enviado ao PostgreSQL.

Abaixo, confira um exemplo de como utilizar o comando:

$query = @’

SELECT current_database() AS database_name,

current_user AS role_name,

version() AS server_version;

‘@

$result = Invoke-PgQuery -Session ‘dev’ -Text $query

$result

Abaixo segue o resultado retornado pelo PowerShell

Como o PowerShell retorna o resultado como um objeto, você pode, portanto, inspecioná-lo com Get-Member e, além disso, processá-lo com comandos como ForEach-Object. Dessa forma, os exemplos abaixo mostram como identificar o tipo do objeto e, em seguida, percorrer os dados retornados:

$result | Get-Member

 

$result | ForEach-Object {

$_.GetType().FullName

}

Reutilizar consultas com New-PgQuery

O comando New-PgQuery permite registrar uma consulta para reutilização posterior. Dessa forma, essa abordagem evita a repetição do mesmo texto SQL em diferentes trechos do script e, além disso, facilita a passagem de parâmetros, como o schema utilizado no exemplo a seguir:

New-PgQuery `

-Name ‘ListarTabelasPublicas’ `

-Query @’

SELECT table_name

FROM information_schema.tables

WHERE table_schema = @Schema

ORDER BY table_name;

‘@

 

$params = @{ Schema = ‘public’ }

Invoke-PgQuery -Name ‘ListarTabelasPublicas’ -Parameters $params

O Posh-PG oferece uma forma interessante de explorar a administração do PostgreSQL com comandos no padrão do PowerShell. Ao longo deste artigo, vimos como compilar e importar o módulo, criar uma sessão, executar consultas e, além disso, reutilizar comandos SQL. Como o projeto ainda é experimental, portanto, utilize-o inicialmente em ambientes de laboratório e valide cuidadosamente seu comportamento antes de considerar qualquer uso mais amplo. Para cenários corporativos, também é importante, ainda, adotar práticas seguras para o tratamento de credenciais, o controle de acesso e o registro das automações executadas.

Por Tiago Crespi e Rodrigo Crespi

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Artigos Recentes

Como usar o PowerShell no PostgreSQL

Fale Conosco

Converse com nossos especialistas e descubra como transformar seus dados em informações seguras, disponíveis e acessíveis.

Endereço

Rua Angelo Antonello, 93 – Sala 62, Centro – Farroupilha/RS – CEP: 95170-492

Contato Comercial

Email: [email protected]
Telefone: (54) 3401-1471