如何执行对一个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