Pesquisar este blog

sexta-feira, 20 de outubro de 2017

Executando comandos MySQL e MSSQL no Powershell

Introdução

Em alguns de nossos scripts vamos precisar de informações que estão em um servidor de banco de dados, pensando nisso é importante sabermos manipularmos conexões com bancos de dados utilizando Powershell.

Nesse artigo vou mostrar códigos utilizados para efetuar leitura, edição e outras ações em servidor MySQL e MSSQL, além de um script pronto para execução de Insert, Select, Delete e outros comandos em ambas plataformas.

MSSQL

Para conexões com MSSQL utilizamos objetos do tipo System.Data.SqlClient.SqlConnection, podemos criar o objeto com seguinte comando.

$sql = new-object System.Data.SqlClient.SqlConnection;


Agora podemos analisar as propriedades dele com o cmdlet Get-Member

$sql | Get-Member

Vamos começar preenchendo a propriedade ConnectionString, com os dados da conexão.

$server = "localhost"
$user = "sa"
$password = "Pa$$w0rd"
$database = "TESTE_DB"
$sql.ConnectionString=“server=$server;user id=$user;password=$password;database=$database;pooling=false”

Após criarmos a conexão precisamos criar um objeto do tipo System.Data.SqlClient.SqlCommand para colocarmos o comando que vamos executar.

$sqlCmd = New-Object System.Data.SqlClient.SqlCommand

Também vamos precisar ter a string do comando que vamos executar

$Comando = “select  * from tabela

Agora precisamos atribuir o comando que criamos e a conexão ao objeto $sqlCmd

$sqlCmd.CommandText = $comando
$sqlCmd.Connection = $sql

Feito isso temos o objeto $sqlCmd pronto para a execução, iniciamos então abrindo a conexão e executando o comando.

$sql.open()
$sqlReader = $sqlcmd.ExecuteReader()

Agora temos que verificar os itens retornados, eles ficam dentro do $sqlReader no método Read, então executamos o código a baixo para retornar os itens.

while($sqlReader.Read()){
$sqlReader[0]
}

Devemos notar que o $sqlReader é um vetor, em cada uma das posições do vetor vai representar uma das colunas retornadas pelo select, caso queiramos a segunda coluna trocamos o [0] por [1].

Após isto não podemos esquecer de fechar a conexão com o banco.

$sql.Close()

Caso nosso interesse seja um insert, delete ou outro comando que não seja de leitura, utilizamos o ExecuteNonQuery ao invés do ExecuteReader.

$sqlReader = $sqlCmd.ExecuteNonQuery()

MySQL via PowerShell

Para utilizarmos o MySQL no Powershell é necessário termos uma DLL chamada MySql.Data.dll, que vem pode ser baixada no site do MySQL ( ela vem junto ao cliente MySQL )
Primeiro temos que carregar a DLL para nossa sessão Powershell.

[void][system.reflection.Assembly]::LoadFrom(“C:\MySql.Data.dll”)

Todo processo é muito semelhante ao do MSSQL, porém os objetos utilizados para criação da connection string e dos comandos muda.
Para criarmos a connection string utilizamos:

$sql = new-object MySql.Data.MySqlClient.MySqlConnection;
$server = "localhost"
$user = "root"
$password = "Pa$$w0rd"
$database = "TESTE_DB"
$sql.ConnectionString=“server=$server;user id=$user;password=$password;database=$database;pooling=false”

Então para executarmos o comando criamos o objeto de comando referente ao MySQL.

$sqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand

O resto do processo permanece o mesmo.

Script pronto!

Você pode baixar um script pronto que fiz com funções para efetuar as conexões na Gallery Script,  link

Referências

Esse artigo foi desenvolvido com base no conhecimento adquerido na execução de projetos de automatização.
Retirado de: https://social.technet.microsoft.com/wiki/pt-br/contents/articles/14100.executando-comandos-mysql-e-mssql-no-powershell.aspx

Este artigo foi originalmente publicado por:
Matheus Kamphorst | Blog: http://howtoserver.com

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.