Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Korzystaj z konsoli MySQL za pomocą skryptu PowerShell

To, co próbujesz zrobić, nie zadziała, ponieważ Twój kod nie dostanie się do show databases; dopóki nie wyjdziesz z mysql.exe . Zwykły sposób użycia mysql.exe ze skryptu jest uruchamianie pliku wykonywalnego z każdym zapytaniem:

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

Użyj splatting za zapewnienie wspólnych parametrów.

Normalnie dodałbyś również parametry -B (--batch , wykonanie nieinteraktywne, bez wymyślnego formatowania danych wyjściowych) i -N (--skip-column-names , nie pokazuj tytułów kolumn w danych wyjściowych), aby uzyskać bardziej „przyswajalne” dane wyjściowe w następujący sposób:

information_schema
mysql
performance_schema
test

zamiast uzyskać takie domyślne wyjście, które wymagałoby przeanalizowania danych z tabeli w celu dalszego przetwarzania:

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

Mając to na uwadze, znacznie lepszym podejściem niż praca z klientem wiersza poleceń byłoby użycie .Net Złącze , np. tak:

$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

W ten sposób dane wyjściowe, które otrzymasz, będą rzeczywistymi obiektami, a nie łańcuchami.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Gdzie między dwiema datami bez roku?

  2. Zapytanie MySQL :Dopasuj wartość oddzieloną przecinkami z kolumną zawierającą ciąg oddzielony przecinkami

  3. pymssql.OperationalError:komunikat o błędzie DB-Lib 20009, ważność 9

  4. Jak uruchomić skrypt powłoki po ponownym uruchomieniu?

  5. Jak zaimportować plik CSV do tabeli MySQL