Queries no SQL com Powershell

Tempo de leitura: 2 minutos

Queries no SQL com Powershell

Olá a pessoal,

Hoje vamos ver como fazer uma consulta no banco SQL usando classes .NET. Isso permite que vocês possam automatizar a extração de algum relatório para CSV usando apenas o Powershell e em seguida trabalhar essa massa de dados da forma que desejarem

Separei em 4 passos para facilitar neste caso.

1º: Variáveis, parâmetros e a query em si, pela minha experiencia, devem estar em variáveis, para a conexão processar um objeto do tipo string, dessa forma fica mais fácil evitar bugs no script.

#Set Query Date Variables
$datestart= (Get-Date).AddDays(-1).ToString(“yyyy-M-dd 00:00:00”)
$dateend= (Get-Date).AddDays(-1).ToString(“yyyy-M-dd 23:59:59”)
[string]$query=”select * from Dates where Initiateddate between ‘$datestart’ and ‘$dateend'”
$filename= (Get-Date).AddDays(-1).ToString(“yyyyMMdd”)

2º: Conexão, vamos criar uma nova conexão usando a Classe System.Data.SqlClient.SqlConnection, a documentação completa esta acessível no MSDN. Após criar o objeto definimos a string de conexão especificando Servidor, Base, Usuário e senha, caso queira usar autenticação integrada use: Integrated Security=True no lugar do usuario e senha, em seguida chamamos o método .Open() para abrir a conexão com a base.

#Set connection strings
$connection=New-Object-TypeName System.Data.SqlClient.SqlConnection
$connection.ConnectionString =”server=DatabaseServer;database=GUIDO_DB;uid=guido;password=1234″
$connection.Open()

3º: Comando: Vamos chamar o metodo .CreateCommand() para definir a propriedade CommandText, que é o comando a ser enviado e vamos dizer que ele será a variável query, que definimos anteriormente. Após isso iremos enviar o comando e armazenar o resultado na variável $result.

#creating and running the query
$command=$connection.CreateCommand()
$command.CommandText =$query
$result=$command.ExecuteReader()

4º: Resultado, iremos armazenar o resultado dentro da variável $table, que seria um objeto do tipo System.DataTable, com o método .Load()vamos carregar os resultados armazenados dentro da variável, feito isso basta fechar a conexão com o banco.

#store result in the Table variable
$table=New-Object-TypeName System.Data.DataTable
$table.Load($result)
$connection.Close()

Agora podemos simplesmente tratar o resultado como qualquer outro objeto de Powershell, no exemplo abaixo estou enviando para um arquivo CSV.

#store result in the Table variable

$table|Export-Csv-Path”$env:USERPROFILEDesktop$filename.csv”-NoClobber-NoTypeInformation-Encoding UTF8 –UseCulture

Duvidas ou sugestões? Comente!

Até a proxima!

Você pode encontrar esse artigo em: https://guidooliveira.com/2016/04/13/queries-no-sql-com-powershell/

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *