代码之家  ›  专栏  ›  技术社区  ›  Jonathan Escobedo

我的sqlcomand on ssis-dataflow ole db命令似乎不起作用

  •  0
  • Jonathan Escobedo  · 技术社区  · 16 年前

    hello im使用ole db source从dbase iv文件中获取行,它可以工作,然后我拆分数据并使用聚合组件执行分组。因此,我得到一行,其中有两列的值为“null”:

    CompanyID | CompanyName |  SubTotal  |    Tax      | TotalRevenue 
       Null        Null         145487      27642.53      173129.53
    

    之所以成功,是因为所有行的分组都不考虑第一列,只需要求和有价值的列,所以我需要将默认值的空值更改为companyid=“100000000”和companyname=“others”。我尝试在OLE DB命令组件上使用sqlcommand:

    SELECT "10000000" AS RUCCLI , "Otros - Varios" AS RAZCLI FROM RGVCAFAC 
    
    <property id="1505" name="SqlCommand" dataType="System.String" state="default" isArray="false" description="The SQL command to be executed." typeConverter="" UITypeEditor="Microsoft.DataTransformationServices.Controls.ModalMultilineStringEditor, Microsoft.DataTransformationServices.Controls, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" containsID="false" expressionType="Notify">SELECT "10000000" AS RUCCLI , "Otros - Varios" AS RAZCLI FROM RGVCAFAC</property>
    

    但是什么都没有发生,为什么?最后,当数据插入到SQL Server表中时,任务完成。

    我在提取数据和转换时使用相同的连接管理器。 (查看代码)

    <DTS:Property DTS:Name="ConnectionString">Data Source=C:\CONTA\Resocen\Agosto\;Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Extended Properties=dBASE IV;</DTS:Property></DTS:ConnectionManager></DTS:ObjectData></DTS:ConnectionManager>
    

    alt text http://web5.twitpic.com/img/30512459-a822658c0dc883a7543171829bff8d9e.4ab399cd-full.jpg

    所有工作都在内存上,我不使用缓存管理器连接

    1 回复  |  直到 15 年前
        1
  •  1
  •   William Salzman    15 年前

    我认为这是你的设想:

    • 您正在从OLEDB提取数据 将数据放入 缓冲器。
    • 接下来你处理 缓冲区的内容 聚合成分。
    • 之后, 运行SQL命令(选择 数据库中的两个常量) 这不会影响缓冲区(或其他)。
    • 最后,将缓冲区的输出发送到OLEDB目标。

    您需要使用派生列将两列中的值(空值)替换为这些列中所需的常量值,而不是使用SQL命令(不影响缓冲区)。

    为了澄清这一点,SQL命令任务用于从数据流中获取信息,并对实际数据库进行更改。它不用于从数据库收集信息以更改数据流中的数据。

    推荐文章