首頁 >資料庫 >mysql教程 >如何自動從多個 .dtsx 檔案中檢索版本號​​?

如何自動從多個 .dtsx 檔案中檢索版本號​​?

Susan Sarandon
Susan Sarandon原創
2024-12-21 15:38:16958瀏覽

How Can I Automate the Retrieval of Version Numbers from Multiple .dtsx Files?

從.Dtsx 檔案自動擷取版本編號

簡介:

簡介:

簡介:
  • 簡介:
    • 手動擷取包裝大量包裝> SSIS 檔案的版本可能很乏味。本文提供了自動化此流程的各種方法。
    • 在 SSIS 套件中使用系統變數:
    • 存取套件中的 SSIS系統變數以擷取版本資訊:
版本建構

版本註解

版本GUI D
  • 主要版本

    次要版本

    取得.dtsx檔案的版本:
  • 將 dtsx 檔案解析為 XML/文字:
    搜尋「PackageFormatVersion "檔案中的屬性header.
  • 使用正規表示式:
    編寫正規表示式模式來擷取 PackageFormatVersion

使用XML 解析器:
  • 將dtsx 檔案載入為XML 查詢文件並使用XPath 進行查詢對於「PackageFormatatsion 」
    從 Sql Server 儲存的 .dtsx文件中取得資訊:

參考以下內容連結查詢:

  • https://billfellows.com/ssis-package-query/
https://technet.microsoft.com/en-us/library/cc521816.aspx

Public Sub ReadPackagesInfo(ByVal strDirectory As String)
    ' Initialize a list to store package information
    m_lst.Clear()

    Dim strPackageFormatVersion As String = ""
    Dim strCreationDate As String = ""
    ' ... (Additional property variables)

    For Each strFile As String In IO.Directory.GetFiles(strDirectory, "*.dtsx", IO.SearchOption.AllDirectories)
        ' Read the file contents
        Dim strContent As String = ""
        Using sr As New IO.StreamReader(strFile)
            strContent = sr.ReadToEnd
            sr.Close()
        End Using

        ' Use Regex to extract package version and other properties
        strPackageFormatVersion = Regex.Match(strContent, "(?<=""PackageFormatVersion"">)(.*)(?=</DTS:Property>)", RegexOptions.Singleline).Value
        ' ... (Additional regex patterns for other properties)

        ' Add package information to the list
        m_lst.Add(New PackageInfo With {
                        .PackageFileName = strFile,
                        .PackageFormatVersion = strPackageFormatVersion,
                        ' ... (Additional properties)
                    })
    Next
End Sub

從中提取資料未儲存在Sql Server 中的.dtsx 檔案:

Public Sub ReadPackagesInfoUsingXmlParser(ByVal strDirectory As String)
    ' Initialize a list to store package information
    m_lst.Clear()

    Dim strPackageFormatVersion As String = ""
    Dim strCreationDate As String = ""
    ' ... (Additional property variables)

    For Each strFile As String In IO.Directory.GetFiles(strDirectory, "*.dtsx", IO.SearchOption.AllDirectories)
        ' Load the file as XML document
        Dim xml = XDocument.Load(strFile)

        ' Create a namespace manager
        Dim ns As XNamespace = "www.microsoft.com/SqlServer/Dts"
        Dim man As XmlNamespaceManager = New XmlNamespaceManager(New NameTable())
        man.AddNamespace("DTS", "www.microsoft.com/SqlServer/Dts")

        If Not xml.Root Is Nothing AndAlso
            Not xml.Root.Descendants(ns + "Property").Attributes(ns + "Name") Is Nothing AndAlso
                 xml.Root.Descendants(ns + "Property").Attributes(ns + "Name").Where(Function(x) x.Value = "PackageFormatVersion").Count > 0 Then
            ' Extract package version and other properties using XPaths
            strPackageFormatVersion = xml.Root.Descendants(ns + "Property").Attributes(ns + "Name").Where(Function(x) x.Value = "PackageFormatVersion").FirstOrDefault.Parent.Value
            ' ... (Additional property extraction using XPaths)
        End If

        ' Add package information to the list
        m_lst.Add(New PackageInfo With {
                        .PackageFileName = strFile,
                        .PackageFormatVersion = strPackageFormatVersion,
                        ' ... (Additional properties)
                    })
    Next
End Sub
使用上述方法(使用上述方法(使用正規表示表達式或XML 解析)讀取儲存在檔案系統上的.dtsx 檔案。 示例代碼使用正則表達式:使用Xml 解析器的示例代碼:

以上是如何自動從多個 .dtsx 檔案中檢索版本號​​?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn