有人可以给我关于管理关系数据库中的事务查询的建议。具体来说,我有一个拥有10000k记录(1TB)的Oracle数据库。在作业ETL(Talend)的上下文中,我必须从Oracle数据库获取所有这些数据,处理它们并将它们插入NoSQL数据库(MongoDB)
假设由于某些技术原因(网络,...),我的服务器在插入第9999条记录后被暂停。
问题是:如何继续Oracle数据库中的第100000条记录,但不能删除之前的所有结果。
谢谢!
答案 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;
如果列不唯一,则必须使用高于或等于此值(> =)的值重新启动,并另外删除可通过此方式引入的重复记录。