如何執行對一個SQLServer數據庫中的SELECT查詢,並遍歷結果說我有一個3列的表格 - 「列1」,「列2」,以及「欄3」 - 數據類型是所有3 VARCHAR(100) 。使用PowerShell
使用PowerShell,我怎麼連接到SQL Server,並使用SqlDataReader對象和foreach操作員查看「列2」的內容是什麼?
如何執行對一個SQLServer數據庫中的SELECT查詢,並遍歷結果說我有一個3列的表格 - 「列1」,「列2」,以及「欄3」 - 數據類型是所有3 VARCHAR(100) 。使用PowerShell
使用PowerShell,我怎麼連接到SQL Server,並使用SqlDataReader對象和foreach操作員查看「列2」的內容是什麼?
這裏大概我是如何做的:
$SqlServer = 'sql.example.com';
$SqlDatabase = 'MyDB';
$SqlConnectionString = 'Data Source={0};Initial Catalog={1};Integrated Security=SSPI' -f $SqlServer, $SqlDatabase;
$SqlQuery = "SELECT Name FROM dbo.Person ORDER BY Name;";
$SqlConnection = New-Object -TypeName System.Data.SqlClient.SqlConnection -ArgumentList $SqlConnectionString;
$SqlCommand = $SqlConnection.CreateCommand();
$SqlCommand.CommandText = $SqlQuery;
$SqlConnection.Open();
$SqlDataReader = $SqlCommand.ExecuteReader();
#Fetch data and write out to files
while ($SqlDataReader.Read()) {
Write-Output $SqlDataReader['Name'];
}
$SqlConnection.Close();
$SqlConnection.Dispose();
如果我沒記錯的話,我基本上是從the MSDN example重構的代碼。
對於那些想知道爲什麼我使用SqlDataReader的人:我的大多數腳本都使用SqlDataAdapter,但是這個從數據庫中檢索大約8,000個PDF文件,所以我沒有真正有興趣調用。作爲交換持有表上的共享鎖的時間比長得多,SqlDataReader.Read()
通過一次獲取一條記錄將客戶端的內存使用降低到可管理的水平。
這就是我正在尋找的 - thx! – barrypicker
你檢查這一點 - http://stackoverflow.com/questions/25682703/connect-to-sql-server-database-from-powershell一旦你將數據導入數據集,你可以很容易地引用表中獲取列。 – Mitul
@Mitul - 你的鏈接顯示連接併發出查詢的示例代碼,但它並不顯示迭代結果集和特定列的評價...... – barrypicker
所以可以嘗試$ DataSet.Tables [0] .Rows [0 ] [「Column2」]看到它的作品。這就是.Net中的工作原理。 – Mitul