我在源表中有4列。
源表:第1列,第2列,第3列,第4列
在源表的4列中,我只想在目标表中插入2列。
目标表:有A列和B列
在A列和B列中插入值。现在我想在SSIS包中执行订单操作。
所以我想在SSIS中有一个顺序逻辑。
如果第1列中有一个值,则在目标列a中使用该值,并将第1列中的值插入a列。所以,如果第1列中有值,则将插入目标表中的A列。
如果第1列中没有值,则检查源表中的第2列,如果第2列中有值,则将该值插入A列。
现在假设第1列为null,第2列为value,第2列的value将被插入到目标表的A列中。
现在检查source中的第3列,看看是否有值,如果有值,然后在Destination表的B列中插入该值。如果第3列中没有值,则从源代码中检查第4列。
所以基本上按照顺序(指定)检查这4列,以及我们遇到的第一个值,在目标列A和列B中使用它。
这里有一个棘手的部分,所以第一个非空值进入目标列A,第二个非空值进入第二个目标列B,我怎样才能知道哪一个是第二个非空值?
我想我们可以在SQL中这样做,但我想在SSIS包中这样做。
我将非常感谢你的帮助。提前谢谢你。
虽然您可能可以通过派生列来完成这项工作,但它会变得一团糟。这样的东西可以更好地在脚本组件中表达。
将脚本组件作为转换添加到数据流中。在“输入行”选项卡中,选择cols 1-4作为只读。在Output选项卡中,向输出缓冲区添加两个新列,分别为A列和B列,并确保将数据类型设置为与cols 1-4匹配。回到常规选项卡上,单击脚本。
在ProcessInputRow
方法中,需要计算将分配给A和B的内容。以下代码是近似值。如果你需要它的原始,评论,我会得到它修复时,我在电脑上。
int firstNonNull = 0;
string colA = string.Empty;
string colB = string.Empty;
// Assign a value for colA and remember
// where we found it
if (!Row.Col1_IsNull)
{
firstNonNull = 1;
colA = Row.Col1;
}
else if (!Row.Col2_IsNull)
{
firstNonNull = 2;
colA = Row.Col2;
}
// Question does not address whether we will find
// non null values in 2 columns exactly
// assuming not
else if (!Row.Col3_IsNull)
{
firstNonNull = 3;
colA = Row.Col3;
}
else if (!Row.Col4_IsNull)
{
firstNonNull = 4;
colA = Row.Col4;
}
// Now to assign a value for B
// Assume that the next column after the first non null is populated
// otherwise, repeat above process
switch (firstnonNull)
{
case 1:
colB = Row.Col2;
break;
case 2:
colB = Row.Col3;
break;
case 3:
colB = Row.Col4;
break;
// Now what?
}
一个更聪明的人可以将所有的值弹出到一个列表中,然后找到前两个非空值或其他方法,但这对于维护来说非常简单。
问题内容: 我知道,如果我在此答案中使用语法,则可以使用一条语句插入多行。 但是,我要插入的值之一取自一个序列,即 如果尝试运行它,则会收到ORA-02287错误。有什么办法解决这个问题,还是我应该只使用很多INSERT语句? 编辑: 如果我必须为序列以外的所有其他列指定列名,那么我会失去原来的简洁性,所以这是不值得的。在这种情况下,我将只使用多个INSERT语句。 问题答案: 这有效:
前面学习了如何使用三元组 顺序表存储稀疏矩阵,其实现过程就是将矩阵中各个非 0 元素的行标、列标和元素值以三元组的形式存储到一维数组中。通过研究实现代码你会发现,三元组顺序表每次提取指定元素都需要遍历整个数组,运行效率很低。 本节将学习另一种存储矩阵的方法—— 行逻辑链接的顺序表。 它可以看作是三元组顺序表的升级版,即在三元组顺序表的基础上改善了提取数据的效率。 行逻辑链接的顺序表和三元组顺序表的
问题内容: 我想使用java8替换以下代码: 以下伪代码由于没有方法而无法使用,但无论如何它说明了我的目的: 问题答案: 对于Java 9或更高版本,最可能需要的是: 使用vavr之类的方法进行固化可能会得到更整齐的代码,但是我还没有尝试过。
问题内容: 我希望在DTSX程序包中有一个sql查询,并且希望有某种提示来更新null列的值。请参阅下面的内容: 我希望能够被提示输入QuoteNumber和ItemNumber,然后根据需要更新脚本。这有可能吗,如果可以的话我该怎么办? 问题答案: 可以通过以下方式实现:这将在您的初始脚本组件中。 这应该是包中用于设置变量值或构造SQL Command的初始组件。
本文向大家介绍数据库中的SELECT语句逻辑执行顺序分析,包括了数据库中的SELECT语句逻辑执行顺序分析的使用技巧和注意事项,需要的朋友参考一下 引言 这不是一个什么多深的技术问题,多么牛叉的编程能力。这跟一个人的开发能力也没有非常必然的直接关系,但是知道这些会对你的SQL编写,排忧及优化上会有很大的帮助。它不是一个复杂的知识点,但是一个非常基础的SQL根基。不了解这些,你一直用普通水泥盖房
我正在尝试使用Python和DataStax驱动程序(Python- 一切都很好,但有些事情我无法理解。如何插入没有空值的行? 例如, 如果我想插入一个没有url值的行,它可以工作,但在卡桑德拉中,我会在url列中看到“null”。 我检查这个文档: http://datas tax . github . io/python-driver/getting _ started . html #将参数