【问题标题】:Exporting powershell output into sql server database将powershell输出导出到sql server数据库
【发布时间】:2017-05-03 20:31:07
【问题描述】:

我有一个正在处理的函数,我需要该函数能够将结果写入 SQL 数据库。在这个函数内部,我调用了另一个名为:Get-svnLogData 的函数,该函数提取有 4 列的信息。 我非常了解 powershell 编码,我迫切需要帮助。

Function SQL-BulkInsert{

    [CmdletBinding()]
    Param
    (
        #The name of the instance, if there is one
        [Parameter(Mandatory=$false, 
                   ValueFromPipeline=$false,
                   ValueFromPipelineByPropertyName=$false, 
                   ValueFromRemainingArguments=$false, 
                   Position=1)] 
        [string]$SQLInstance = "InstanceName",
        [string]$DatabaseName = "DBName",
        [string] $tableName = "dbo.CheckiList"

    )

     $Query="USE DBName
             IF  OBJECT_ID(N'[dbo].[CheckiList]', N'U') IS NOT NULL
             DROP TABLE dbo.CheckinList

             CREATE TABLE [dbo].[CheckinList] (
             [Author]  varchar(200) NULL,
             [Revision] [varchar](20) NOT NULL,
             [Msg] [varchar](100) NULL,
             [Path] [varchar] (250) NULL)" 




    Invoke-Sqlcmd -ServerInstance "InstanceName" -Database "DBNmae" -Query $Query


    $connection = new-object System.Data.SqlClient.SqlConnection;
    $connectiomn.Open()
    $DataTable = Get-SvnLogData | Format-Table -AutoSize
    $bc = new-object ("System.Data.SqlClient.SqlBulkCopy") $connection 
    $bc.DestinationTableName = "dbo.CheckiList"
    $bc.WriteToServer($datatable)

    Write-SqlTableData -ServerInstance $SQLInstance -DatabaseName $DatabaseName -SchemaName dbo -TableName dbo.CheckinList -InputData $DataTable




  } 

我收到此错误:“Write-SqlTableData”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径

请帮助我修复我的代码或向我展示另一种方法。尝试解决此问题已 7 天,但无法弄清楚如何将数据插入 SQL 数据库

【问题讨论】:

  • 你导入了SQLServer模块了吗?
  • @JeffZeitlin,是的,我试过了,但我遇到了无数错误,见下文:在模块“SqlServer”中找到了“Write-SqlTableData”命令,但无法加载该模块。有关更多信息,请运行“Import-Module SqlServer”。
  • @JeffZeitlin 如果我按照上述错误运行:'Import-Module SqlServer',然后我得到另一个错误,见下文: Import-Module:加载扩展类型数据时发生以下错误文件:TypeData“Microsoft.SqlServer.Management.Smo.NamedSmoObject”中的错误:成员 DefaultKeyPropertySet 已存在。 TypeData“Microsoft.SqlServer.Management.Smo.NamedSmoObject”中的错误:成员 DefaultDisplayPropertySet 已存在。
  • 除上述之外,这是怎么做的:Install-Module SqlServer -Scope Currentuser
  • 从新的 PowerShell 会话中重试。

标签: powershell


【解决方案1】:

您看到的错误是告诉您该命令不存在。这有多种原因。对于一个人来说,它可能只是一个错字或类似的东西。在这种情况下,as this 文章将表明,它是一个存在的官方 cmdlet。所以如果它不可用,很可能是你没有加载相应的模块。

为了加载一个模块,你可以使用Import-Module。要查看可用的模块,您可以使用Get-Module -ListAvailable

如果没有可用的 SQL 模块,您可能必须手动提供正确的路径或检查您的安装。

如果模块导入成功,您可以使用Get-Command 检查哪些命令可用。参数Module在这种情况下特别有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 2012-09-16
    • 2018-03-11
    相关资源
    最近更新 更多