本节书摘来自异步社区出版社《PowerShell V3—SQL Server 2012数据库自动化运维权威指南》一书中的第2章,第2.18节,作者:【加拿大】Donabel Santos,更多章节内容可以访问云栖社区“异步社区”公众号查看。
本方案描述了如何用PowerShell和Invoke-Sqlcmd将表内容导出到CSV文件。
访问AdventureWorks2008R2数据库,我们将使用Person.Person表。
如果你的系统中没有C:Temp目录,创建C:Temp目录。
1.通过“Start | Accessories | Windows PowerShell | Windows PowerShell ISE”打开PowerShell控制台。
2.导入SQLPS模块,创建一个新的SMO服务器对象。
#import SQL Server module Import-Module SQLPS -DisableNameChecking #replace this with your instance name $instanceName = "KERRIGAN" $server = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server -ArgumentList $instanceName3.添加如下脚本并运行。
#database handle $dbName = "AdventureWorks2008R2" $db = $server.Databases[$dbName] #export file name $exportfile = "C:\Temp\Person_Person.csv" $query = @" SELECT * FROM Person.Person "@ Invoke-Sqlcmd -Query $query -ServerInstance "$instanceName" -Database $dbName | Export-Csv -LiteralPath $exportfile –NoTypeInformation在这个方案中,我们将结果导出到CSV文件。本方案的导出方法中有两个核心部分。
第一部分是使用Invoke-Sqlcmd cmdlet执行查询。我们指定实例和数据库,并通过该cmdlet发送查询语句给SQL Server。
Invoke-Sqlcmd -Query $query -ServerInstance "$instanceName" -Database $dbName | Export-Csv -LiteralPath $exportfile -NoTypeInformation第二部分是通过管道将结果传输到Export-Csv cmdlet,并指定存储结果的文件名。我们也指定了-NoTypeInformation,所以在文件的第一行我们将忽略#TYPE .NET信息类型。
Invoke-Sqlcmd -Query $query -ServerInstance "$instanceName" -Database $dbName | Export-Csv -LiteralPath $exportfile –NoTypeInformation执行查询语句/SQL脚本方案
相关资源:敏捷开发V1.0.pptx