sql >> Database >  >> RDS >> Mysql

MySQL-console gebruiken via een PowerShell-script

Wat u probeert te doen, zal niet werken, omdat uw code niet bij de show databases; totdat u mysql.exe verlaat . De gebruikelijke manier om mysql.exe te gebruiken van een script is om het uitvoerbare bestand bij elke query uit te voeren:

$db   = 'testasset'
$user = 'asset'
$pass = 'test'

$mysql  = 'C:\Users\I16A1\Downloads\mysql\bin\mysql.exe'
$params = '-u', $user, '-p', $pass, $db

& $mysql @params -e 'SHOW DATABASES'
& $mysql @params -e '...'
...

Gebruik splatting voor het verstrekken van de gemeenschappelijke parameters.

Normaal gesproken zou je ook de parameters -B . toevoegen (--batch , niet-interactieve uitvoering, geen fraaie uitvoeropmaak) en -N (--skip-column-names , toon geen kolomtitels in de uitvoer) om meer "verteerbare" uitvoer te krijgen, zoals deze:

information_schema
mysql
performance_schema
test

in plaats van de standaarduitvoer op deze manier te krijgen, zou het nodig zijn om de gegevens uit de tabel te ontleden voor verdere verwerking:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+

Dat gezegd hebbende, zou een veel betere benadering dan het werken met de commandline-client de .Net zijn. Aansluiting , bijv. zoals dit:

$server = 'localhost'
$db     = 'testasset'
$user   = 'asset'
$pass   = 'test'

$cs = "server=$server;user id=$user;password=$pass;database=$db;pooling=false"

[void][Reflection.Assembly]::LoadWithPartialName('MySQL.Data')

$cn = New-Object MySql.Data.MySqlClient.MySqlConnection
$cn.ConnectionString = $cs
$cn.Open()

$cmd= New-Object MySql.Data.MySqlClient.MySqlCommand
$cmd.Connection  = $cn
$cmd.CommandText = 'SHOW DATABASES'
$reader = $cmd.ExecuteReader()

$tbl = New-Object Data.DataTable
$tbl.Load($reader)
$reader.Close()
$cn.Close()

$tbl | Format-Table -AutoSize

Op die manier zal de output die je krijgt echte objecten zijn in plaats van strings.




  1. java.lang.IllegalStateException:Poging om een ​​bewerking uit te voeren op een gesloten EntityManagerFactory

  2. Een multi-datacenterconfiguratie voor PostgreSQL implementeren - deel één

  3. Beste opties voor databasecontrole die beschikbaar zijn voor uw bedrijf

  4. 4 functies om een ​​getal op te maken tot 2 decimalen in SQL Server