sql >> データベース >  >> RDS >> Mysql

PowerShellスクリプトを介してMySQLコンソールを使用する

    コードがshowdatabase; に到達しないため、実行しようとしていることは機能しません。 mysql.exeを終了するまで 。 mysql.exeを使用する通常の方法 スクリプトからは、各クエリで実行可能ファイルを実行します:

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

    スプラッティング を使用します 共通のパラメータを提供するため。

    通常は、パラメータ -Bも追加します (-バッチ 、非対話型実行、派手な出力フォーマットなし)および -N -skip-column-names 、次のような「消化しやすい」出力を取得するには、出力に列タイトルを表示しないでください:

    information_schema
    mysql
    performance_schema
    test

    このようなデフォルトの出力を取得する代わりに、さらに処理するためにテーブルからデータを解析する必要があります。

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

    そうは言っても、コマンドラインクライアントで作業するよりもはるかに優れたアプローチは、.Netを使用することです。コネクタ 、例:このように:

    $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
    

    そうすれば、得られる出力は文字列ではなく実際のオブジェクトになります。




    1. 有用なOracleAppsプリンタークエリのトップ9

    2. MySQLエラー#2014-コマンドが同期していません。現在、このコマンドを実行することはできません

    3. MySQL-ストアドプロシージャへの入力を分解/分割

    4. XAMPPフォルダー内のMySQLデータベーステーブルの正確な場所はどこですか?