基于列名而不是值的条件拆分

时间:2019-07-03 15:10:26

标签: sql ssis

我必须构建一个SSIS包,在其中将根据列名加载数据。 我有7个平面文件,必须根据列名将这些文件加载​​到SQL Server中的2个表中。具有列名称(名字,姓氏,电话号码)的平面文件应转到表A。具有列名称(名字,姓氏,单元格编号)的平面文件应转到表B。 拆分应基于列名而不是列值进行。我不是.net人。

1 个答案:

答案 0 :(得分:1)

  1. 使用foreach循环遍历所有文件,并将名称完整的文件路径保存为变量。

  2. 使用脚本任务来确定文件是用于手机还是普通手机。     注意:文件路径也可能是foreach循环中的变量

    string readingLine;
    
    Using(System.IO.StreamReader readingFile = new System.IO.StreamReader(filePath))
    {
       readingLine = readingFile.ReadLine();
    }
    if(readingLine.Contains("Cell") //It would be best to use the full column name with a comma to avoid names with Cell in it to false trigger a true result
    {
       Dts.Variables("PhoneType").Value = "Cell";
    {
    else
    {
       Dts.Variables("PhoneType").Value = "Phone";
    }
    
  3. 添加数据流

  4. 读取平面文件跳过标题行。
  5. 添加派生列以通过变量添加电话类型
  6. 加载到表格

完成此操作后,您可以为所需的输出创建视图。