代码之家  ›  专栏  ›  技术社区  ›  Nick

如果存在某些参数,则拆分列

  •  0
  • Nick  · 技术社区  · 11 年前

    我不知道该怎么办,因为我可以用平面文件源在一个专栏中完全阅读,但如果某些东西是可用的,我需要把它们分成一个单独的专栏。

    例子:

    line 1)  2013-08-23 14:03:17 ipaddress:port @client POST /api func_0() result(0)
    
    line 2) 2013-08-23 14:03:18 ipaddress:port @client POST /api/logout LOGOUT  
      (lm=local,haspid=randomnumbers,feat=0,sess=0000007E,duration=8400) result(0)
    
    line 3)  2013-08-23 14:03:18 ipaddress:port @client POST /api/logout LOGOUT  
      (lm=local,haspid=randomnumbers,feat=1,sess=0000007D,duration=8408) result(0)
    

    (为便于阅读而包装:这三条线中的每一条都是一条很长的线)

    我需要做一些派生列,将sess=和duration=的内容拆分为各自独立的列,但正如您所看到的,有时函数列是不同的,并且包含一个空的func_0或其他类型的函数,因此无法通过在读入的平面文件源中对其进行定界来完成。

    有什么想法吗?

    2 回复  |  直到 11 年前
        1
  •  1
  •   SinisterPenguin    11 年前

    我会在这里使用脚本转换。您可以使用regEx或简单的字符串contains来查看/api列中是否有数据。

    然后使用split()或regEx将数据从sess=和duration=&将其写入新的列中。

    您可以在脚本转换中创建新列,但我个人喜欢在脚本任务之前使用派生列转换来创建新列-例如sess&期间

    然后为所有行创建列&只需要使用脚本任务将数据添加到sess&duration列(如果/api列中存在数据)。

    我希望这是有道理的!

        2
  •  0
  •   Community Egal    7 年前

    我有一个类似的要求,包括阅读一些文件并查找 tolken=值 可能存在也可能不存在的对。我只能通过使用scrip任务和编写一个简单的解析器来完成它。我在这个问题上稍微解释了一下。 ssis import fixed width flat file with header and trailer rows

    如果你想朝这个方向发展,我可以提供一些示例代码。如果你有任何问题,请告诉我。