3

MySQLサーバーに接続し、新しいデータベースを作成し、そのデータベースに対してクエリコマンドを実行することになっているPowerShellでスクリプトを記述しています。実行するすべてのコマンドを含む事前に作成された.sqlファイルがありますが、実際に.sqlファイルを実行しないというコードに問題があるようです。どんな助けでもいただければ幸いです。私のコードは以下の通りです。

[void][system.reflection.Assembly]::LoadWithPartialName("MySql.Data")

#Creates a connection to the server
$connStr ="server=mySql;Persist Security Info=false;user id=" + "username" + ";pwd=" + "pass" + ";"
$conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr)

#Open connection
$conn.Open()

#Drops database if it currently exists
$cmd = New-Object MySql.Data.MySqlClient.MySqlCommand
$cmd.Connection  = $conn
$cmd.CommandText = "DROP DATABASE IF EXISTS " + $dbname
$cmd.ExecuteNonQuery()

#Create the new database
$cmd.CommandText = 'CREATE SCHEMA `' + $dbname + '`'
$cmd.ExecuteNonQuery()

#Load the sql file
$sql = (Get-Content C:\"path to sql file") -join "'r'n"
$cmd.CommandText = $sql

#Close connection
$conn.Close()
4

1 に答える 1

1

$cmd.ExecuteNonQuery() 呼び出しがありませんか? そして、ファイル行をリテラル「'r'n」で結合しているようです。代わりにバックティック文字を使用する必要があります (例: "`r`n")。Out-String コマンドレットを使用して、ファイルの内容を 1 つの文字列に変換します。

#Load the sql file
$sql = Get-Content C:\"path to sql file" | Out-String
$cmd.CommandText = $sql
$cmd.ExecuteNonQuery()
于 2012-05-16T20:34:42.120 に答える