sql >> Database teknologi >  >> RDS >> Mysql

Brug MySQL-konsollen gennem et PowerShell-script

Det, du prøver at gøre, virker ikke, fordi din kode ikke kommer til show databases; indtil du afslutter mysql.exe . Den sædvanlige måde at bruge mysql.exe på fra et script er at køre den eksekverbare med hver forespørgsel:

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

Brug splatting for at give de fælles parametre.

Normalt vil du også tilføje parametrene -B (--batch , ikke-interaktiv udførelse, ingen fancy outputformatering) og -N (--skip-column-names , vis ikke kolonnetitler i output) for at få mere "fordøjeligt" output som dette:

information_schema
mysql
performance_schema
test

i stedet for at få standardoutput som dette, ville det kræve at parse dataene ud af tabellen for yderligere behandling:

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

Når det er sagt, ville en meget bedre tilgang end at arbejde med kommandolinjeklienten være at bruge .Net Stik , for eksempel. sådan her:

$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å den måde vil det output, du får, være faktiske objekter i stedet for strenge.




  1. Håndtering af store datamængder med MySQL og MariaDB

  2. Håndtering af udenlandske nøgleundtagelser i PHP

  3. Føj dag til tidsstempel

  4. Kan jeg i en Oracle-trigger tildele ny og gammel til en rækketypevariabel?