《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》—— 使用Invoke-Sqlcmd实施批量导出...

    xiaoxiao2024-04-16  6

    本节书摘来自异步社区出版社《PowerShell V3—SQL Server 2012数据库自动化运维权威指南》一书中的第2章,第2.18节,作者:【加拿大】Donabel Santos,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    2.18 使用Invoke-Sqlcmd实施批量导出

    本方案描述了如何用PowerShell和Invoke-Sqlcmd将表内容导出到CSV文件。

    2.18.1 准备

    访问AdventureWorks2008R2数据库,我们将使用Person.Person表。

    如果你的系统中没有C:Temp目录,创建C:Temp目录。

    2.18.2 如何做…

    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 $instanceName

    3.添加如下脚本并运行。

    #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

    2.18.3 如何实现…

    在这个方案中,我们将结果导出到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

    2.18.4 请参阅…

    执行查询语句/SQL脚本方案

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)