sql >> Databasteknik >  >> RDS >> Mysql

Använd MySQL-konsolen genom ett PowerShell-skript

Det du försöker göra kommer inte att fungera, eftersom din kod inte kommer till show databases; tills du avslutar mysql.exe . Det vanliga sättet att använda mysql.exe från ett skript är att köra den körbara filen med varje fråga:

$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 '...'
...

Använd splatting för att tillhandahålla de gemensamma parametrarna.

Normalt skulle du också lägga till parametrarna -B (--batch , icke-interaktiv körning, ingen fancy utformatering) och -N (--skip-column-names , visa inte kolumntitlar i output) för att få mer "smält" utdata så här:

information_schema
mysql
performance_schema
test

istället för att få standardutdata på det här sättet, skulle det kräva att data analyseras ur tabellen för vidare bearbetning:

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

Med det sagt skulle ett mycket bättre tillvägagångssätt än att arbeta med kommandoradsklienten vara att använda .Net Anslutning , t.ex. så här:

$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

På så sätt blir utdatan du får faktiska objekt istället för strängar.




  1. Oracles datakälla-konfiguration för Spring

  2. En översikt över PRINT-satsen i SQL Server

  3. MySQL Välj endast en rad från varje patient som diagnostiserats enligt det första datumet

  4. Php/ODBC-kodningsproblem