sql >> Databáze >  >> RDS >> Mysql

Použijte konzolu MySQL prostřednictvím skriptu PowerShell

To, o co se pokoušíte, nebude fungovat, protože váš kód se nedostane do show databases; dokud neopustíte mysql.exe . Obvyklý způsob použití mysql.exe ze skriptu je spustit spustitelný soubor s každým dotazem:

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

Použijte splatting pro poskytování společných parametrů.

Normálně byste také přidali parametry -B (--batch , neinteraktivní provádění, žádné efektní formátování výstupu) a -N (--skip-column-names , nezobrazovat ve výstupu názvy sloupců), abyste získali „stravitelnější“ výstup, jako je tento:

information_schema
mysql
performance_schema
test

místo získání výchozího výstupu, jako je tento, by to vyžadovalo analýzu dat z tabulky pro další zpracování:

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

Díky tomu by mnohem lepším přístupem než práce s klientem příkazového řádku bylo použití .Net konektor , např. takhle:

$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

Tímto způsobem výstup, který získáte, budou skutečné objekty namísto řetězců.




  1. Jak propojit sql server s php pomocí xampp?

  2. Postgresql :Jak mohu vybrat top n procent (%) položek z každé skupiny/kategorie

  3. UPDATE/DELETE v mysql a získat seznam dotčených ID řádků?

  4. MySQL Řazení podle čísla, prázdné řetězce (nebo 0) jako poslední