事务 - 查询数据库管理

时间:2015-07-07 13:24:11

标签: oracle mongodb transactions etl talend

有人可以给我关于管理关系数据库中的事务查询的建议。具体来说,我有一个拥有10000k记录(1TB)的Oracle数据库。在作业ETL(Talend)的上下文中,我必须从Oracle数据库获取所有这些数据,处理它们并将它们插入NoSQL数据库(MongoDB)

假设由于某些技术原因(网络,...),我的服务器在插入第9999条记录后被暂停。

问题是:如何继续Oracle数据库中的第100000条记录,但不能删除之前的所有结果。

谢谢!

1 个答案:

答案 0 :(得分:0)

选择按某列排序的源表,最好是唯一的列。

protected void HighlightSubscription(object source, EventArgs e)
{
    Repeater rptrSubscriptions = new Repeater();
    foreach (RepeaterItem a in rptrSubscriptionGroups.Items)
    {
        rptrSubscriptions = (Repeater)a.FindControl("rptrSubscriptions");
    }

    //find previous selected row
    if (hiddenSelectedSubscriptionRowIndex.Value.Length > 0)
    {
        int rowIndex = int.Parse(hiddenSelectedSubscriptionRowIndex.Value);
        //Repeater rptrSubscriptions = (Repeater)e.Item.FindControl("rptrSubscriptions");

        RepeaterItem item = rptrSubscriptions.Items[rowIndex];

        if (rptrSubscriptions != null)
        {
            // Uncheck Old Radio Button

            RadioButton rbOld = (RadioButton)item.FindControl("rbBox");
            rbOld.Attributes.CssStyle.Add("border-color", "lightgray");
            rbOld.Attributes.CssStyle.Add("border-width", "1px");
            rbOld.Checked = false;
        }
    }
    RadioButton rb = source as RadioButton;
    int CurrentrepeaterItemIndex = ((RepeaterItem)rb.NamingContainer).ItemIndex;

    // save current row index in a hiddden field
    hiddenSelectedSubscriptionRowIndex.Value = CurrentrepeaterItemIndex.ToString();

}

如果列是唯一的,则在重启时,请检查TARGET数据库中的最高值,然后使用高于此值的值(>)重新启动。

select ... from SOURCE order by ID;

如果列不唯一,则必须使用高于或等于此值(> =)的值重新启动,并另外删除可通过此方式引入的重复记录。