2013-07-12 363 views
1

需要幫助解決這個問題: 我需要從MySQL數據庫中獲取表數據以便在腳本中進一步使用。我使用這個代碼,用於訪問MySQL數據:利用MySQL查詢結果

[void][System.Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector Net 6.7.4\Assemblies\v2.0\MySql.Data.dll") 
$Connection = New-Object MySql.Data.MySqlClient.MySqlConnection 
$Connection.ConnectionString = $ConnectionString 
$Connection.Open() 
$Command = New-Object MySql.Data.MySqlClient.MySqlCommand($Query, $Connection) 
$DataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($Command) 
$DataSet = New-Object System.Data.DataSet 
$RecordCount = $dataAdapter.Fill($dataSet,"data") | Out-Null 
$Command.Dispose() 
$Table=$DataSet.Tables["data"] | FT -auto 
$Connection.Close() 
$Table 

,它給了我寶貴的一塊垃圾:

 
TASKID TASKTYPE fistNAME secNAME STATUS 
------ -------- -------- ------- ------ 
1111   1 Dep1     0 
2222   2 User321 Dep1   0 

,但是當我嘗試,例如將結果導出爲CSV:

Export-Csv -Path "c:\test.csv" -InputObject $Table 

我得到的是:

 
#TYPE System.Object[] 
"Count","Length","LongLength","Rank","SyncRoot","IsReadOnly","IsFixedSize","IsSynchronized" 
"6","6","6","1","System.Object[]","False","True","False" 

所以當我嘗試在變量來分析數據是這樣的:

Write-Host $Table 
foreach ($Task in $Table) { 
    Write-Host $Task.TASKID 
} 

我得到的是:

 
Microsoft.PowerShell.Commands.Internal.Format.FormatStartData 
Microsoft.PowerShell.Commands.Internal.Format.GroupStartData 
Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData 
Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData 
Microsoft.PowerShell.Commands.Internal.Format.GroupEndData 
Microsoft.PowerShell.Commands.Internal.Format.FormatEndData 

誰能幫我resove這個問題?

+0

當你寫'主機$任務',然後將其管道到'格式列表'和選擇所有屬性會發生什麼? ('write-host $ Task | fl -Property *')這會顯示你可以訪問的所有屬性。你也可以嘗試'write-host $ Task.TASKID.Value',它可以提取'TASKID'屬性的值。 – Richard

+0

以及'write-host $ Task | fl -Property *'它給了我「Microsoft.PowerShell.Commands.Internal.Format.FormatEndData」和'write-host $ Task.TASKID.Value'另一個空行 – Andrey

+0

這是你創建變量'$ Table'的方式那就是問題所在。你有沒有嘗試下面的建議答案? – Richard

回答

6

此行

$Table=$DataSet.Tables["data"] | FT -auto 

將您的數據轉換成FormatStartData對象的數組。

當您想導出數據時,不要將數據傳輸到Format-Table。試試這個:

$DataSet.Tables["data"] | Export-Csv "c:\test.csv" 
$DataSet.Tables["data"] | Export-Csv "c:\test.csv" 
+1

是的,這是解決方案!你是男人。 – Andrey