【问题标题】:Get the field list of flat file connection?获取平面文件连接的字段列表?
【发布时间】:2015-08-29 05:21:57
【问题描述】:

如何编写函数(外部函数、c#、f#或powershell脚本等)

List<string> GetFields(string ssisPackageName, string fileSourceName);

获取 SSIS 包的字段列表?既然包是xml文件,那么可以用xquery来获取列表吗?

或者更好的是,获取更多信息,

class Field 
{ 
  public string Name { get; set; } 
  public string Type { get; set; } 
}
List<Field> GetFields(string ssisPackageName, string fileSourceName);

【问题讨论】:

  • 希望检索特定平面文件连接管理器的列定义?我认为您的 Field 类不能充分代表数据类型的复杂性。如果是字符串,是 ANSI 还是 Unicode? Unicode,8 位还是 16 位?等

标签: c# sql-server powershell ssis


【解决方案1】:

@billinkc 是对的,您应该牢记数据类型问题。也就是说,您最多可以检索平面文件连接管理器本身的代码页和 Unicode 值。以下代码应该可以帮助您入门,您可能需要在其中查找代码页和数据类型属性。

string path = @"MyPathTo\Package.dtsx";
XNamespace dts = "www.microsoft.com/SqlServer/Dts";
XDocument doc = XDocument.Load(path);

// get all connections
var connections = from ele in doc.Descendants(dts + "ConnectionManager")
                  where ele.Attributes(dts + "ObjectName").Count() != 0
                  select ele;

foreach (var connection in connections)
{
    // look for your flat file connection
    if (connection.Attribute(dts + "ObjectName").Value == "Flat File Connection Manager")
    {
        var connectionDetails = connection.Element(dts + "ObjectData").Element(dts + "ConnectionManager");
        Console.WriteLine("CodePage: " + connectionDetails.Attribute(dts + "CodePage").Value);
        Console.WriteLine("Unicode: " + connectionDetails.Attribute(dts + "Unicode").Value);
        var columnList = connection.Descendants(dts + "FlatFileColumn");
        foreach (var column in columnList)
        {
            Console.WriteLine("Column name: " + column.Attribute(dts + "ObjectName").Value);
            Console.WriteLine("Column type: " + column.Attribute(dts + "DataType").Value);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2019-08-30
    • 2022-11-30
    相关资源
    最近更新 更多