Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSI使用sql选择的结果更新列_Sql_Ssis - Fatal编程技术网

SSI使用sql选择的结果更新列

SSI使用sql选择的结果更新列,sql,ssis,Sql,Ssis,我想知道是否有一种方法可以通过在每一行上运行select来更新数据流任务中的列 情况如下: 让我们以此为出发点。我从两个文件中收集信息,然后合并它们,并使用派生列工具添加一列。是否有一种方法可以通过使用行的值对每行执行select来填充此列 例: 我不知道我是否只是没有正确地表达我的需求,但我没有得到任何结果 谢谢您应该可以通过查找转换来完成此操作 根据评论进行编辑: 如果由于表的大小而不想使用查找,则可以使用脚本组件执行所需的操作。您可以像在任何.net应用程序中一样,为数据流的每一行创建和

我想知道是否有一种方法可以通过在每一行上运行select来更新数据流任务中的列

情况如下:

让我们以此为出发点。我从两个文件中收集信息,然后合并它们,并使用派生列工具添加一列。是否有一种方法可以通过使用行的值对每行执行select来填充此列

例:

我不知道我是否只是没有正确地表达我的需求,但我没有得到任何结果


谢谢

您应该可以通过查找转换来完成此操作

根据评论进行编辑:


如果由于表的大小而不想使用查找,则可以使用脚本组件执行所需的操作。您可以像在任何.net应用程序中一样,为数据流的每一行创建和执行SQL命令。

您应该能够通过查找转换来完成此操作

根据评论进行编辑:


如果由于表的大小而不想使用查找,则可以使用脚本组件执行所需的操作。您可以像在任何.net应用程序中一样,为数据流的每一行创建和执行SQL命令。

我可以使用脚本组件来完成这项工作

1-我已删除派生列

2-我已经创建了一个字符串变量,在其中存储了一个带有通配符字符串的查询,以替换我需要从该行获取的每个值

3-我已经将这个变量allong和一个包含connection字符串信息的变量一起传递给脚本组件

4-我在脚本组件的输出列中添加了一个新列

5-使用System.Data.OleDb添加

6-创建了两个变量:

string jourFerieQuery;
string dbcsoledbschema;
7-更新PostExecute()以将my SSIS变量的值放入脚本变量:

public override void PostExecute()
    {
        base.PostExecute();
        jourFerieQuery = Variables.jourFerieQuery;
        dbcsoledbschema = Variables.dbcsoledbschema;
    }
8-增加了一种方法:

int GetData(string cs, string query)
    {
        OleDbConnection conn = new OleDbConnection(cs);
        conn.Open();
        OleDbCommand cmd = new OleDbCommand(query, conn);

        DataTable dt = new DataTable();
        dt.Load(cmd.ExecuteReader());
        conn.Close();
        return (int)dt.Rows[0][0];
    }
9-更新了Input0\u进程InputRow(Input0Buffer行):


我的查询返回一个计数,这就是为什么我添加的方法返回一个int,我可以用一个脚本组件来完成它

1-我已删除派生列

2-我已经创建了一个字符串变量,在其中存储了一个带有通配符字符串的查询,以替换我需要从该行获取的每个值

3-我已经将这个变量allong和一个包含connection字符串信息的变量一起传递给脚本组件

4-我在脚本组件的输出列中添加了一个新列

5-使用System.Data.OleDb添加

6-创建了两个变量:

string jourFerieQuery;
string dbcsoledbschema;
7-更新PostExecute()以将my SSIS变量的值放入脚本变量:

public override void PostExecute()
    {
        base.PostExecute();
        jourFerieQuery = Variables.jourFerieQuery;
        dbcsoledbschema = Variables.dbcsoledbschema;
    }
8-增加了一种方法:

int GetData(string cs, string query)
    {
        OleDbConnection conn = new OleDbConnection(cs);
        conn.Open();
        OleDbCommand cmd = new OleDbCommand(query, conn);

        DataTable dt = new DataTable();
        dt.Load(cmd.ExecuteReader());
        conn.Close();
        return (int)dt.Rows[0][0];
    }
9-更新了Input0\u进程InputRow(Input0Buffer行):


我的查询返回一个计数,这就是我添加的方法返回int的原因。您可以通过脚本组件(转换)来实现这一点

添加一个Ct输出


我使用System.Data.OleDB,因为它与SSIS包连接字符串相匹配。

您可以通过脚本组件(转换)来实现这一点

添加一个Ct输出


我使用System.Data.OleDB,因为它与SSIS包连接字符串相匹配。

我无法这样做,因为查询每行都会发生变化,而且我不想加载整个表,因为它太大了。但如果可能的话,我想看看如何谢谢你,这就是我最后要做的。我已经列出了解决方案中的一些步骤,当查询随着每一行的变化而变化时,postedI无法完成这些步骤,我不想加载整个表,因为它太大了。但如果可能的话,我想看看如何谢谢你,这就是我最后要做的。我已经列出了解决方案中的步骤,这些步骤都是postedIt始终有助于获得详细信息。postedIt始终有助于获得详细信息