Текущий архив: 2007.03.18;
Скачать: CL | DM;
Вниз
Уважаемые мастера, подскажите как перегнать данные из FireBird Найти похожие ветки
← →
svt (2006-12-21 09:19) [0]Уважаемые мастера, подскажите как перегнать данные из FireBird to MSSQL. Есть около одного лимона записей в базе FireBird по некоторым причинам необходимо некоторые данные перегнать в MSSQL.
Я написал следующий код, но даже на машине с 2-мя гигами оперативки не смог всю перегнать. Я понимаю, что мог не правильно написать код. Прошу совета как это реализовать. ВОт только по частям перегонять не удобно.
ADOConnection1.Connected:=true;
IBDatabase1.Connected:=true;
IBTransaction1.Active:=true;
IBTable1.Active:=true;
IBTable1.First;
while IBTable1.Eof<>true do
begin
ADOCommand1.CommandText:="insert into DneprPeople(FirstName,MiddleName,LastName,BirthDay,DeathDay,Atoh,BirthPlace,Sett lement,Street,House,Building,Flat,CN,IR,Indx)"
+"values ("""+apos(IBTable1VOT_FIRSTNAME.AsString)+""","""+apos(IBTable1VOT_MIDDLENAME.AsString)+""","""
+apos(IBTable1VOT_LASTNAME.AsString)+""","""+Datetostr(IBTable1VOT_BIRTHDATE.AsDateTime)+""","""
+DateToStr(IBTable1VOT_DEATHDATE.AsDateTime)+""","""+Inttostr(IBTable1VOT_ATOH.AsInteger)+""","""
+apos(IBTable1VOT_BIRTHPLACE.AsString)+""","""+apos(IBTable1VOT_L_SETTLEMENT.AsString)+""","""
+apos(IBTable1VOT_L_STREET.AsString)+""","""+apos(IBTable1VOT_L_HOUSE.AsString)+""","""
+apos(IBTable1VOT_L_BUILDING.AsString)+""","""+apos(IBTable1VOT_L_FLAT.AsString)+""","""
+inttostr(IBTable1VOT_CN.AsInteger)+""","""+inttostr(IBTable1VOT_IR.AsInteger)+""","""+apos(IBTable1VOT_L_INDEX.AsString)+""")";
ADOCommand1.Execute;
IBTable1.Next;
end;
Спасибою.
← →
Sergey13 © (2006-12-21 09:30) [1]> Я написал следующий код, но даже на машине с 2-мя гигами
> оперативки не смог всю перегнать.
Почему? Ждать надоело или причина какая была?
Можно сделать то-ж самое (раз уж написано), только вместо IBTable1 взять IBDataSet и загонять в него записи например по диапазону ID (типа <200000, 2000000-500000,>500000), потом то-же самое, но, блин, параметры то для кого придумали.
← →
ORMADA © (2006-12-21 09:50) [2]а найти одбс драйвер с с самого мс скуля всосать данные не пробовал ?
← →
svt (2006-12-21 09:53) [3]
> Почему? Ждать надоело или причина какая была?
прекратил операцию и объяснил это нехваткой памяти.
> но, блин, параметры то для кого придумали.
Если через параметры решиться проблема, то будем их использовать.
но может проблема и не в не использовании параметров.
Возможно я не правильно использую компоненты или использую но не те! я учту IBDataSet. вот вопрос. как перейти к 200000 записи? вопрос банален, но все же.
← →
svt (2006-12-21 09:58) [4]
> а найти одбс драйвер с с самого мс скуля всосать данные
> не пробовал ?
к сожалению, пока мои познания не так велики, но если объяснить что и как, то я попробую.:)
← →
Виталий Панасенко (2006-12-21 10:06) [5]
> svt (21.12.06 09:53) [3]
>
> > Почему? Ждать надоело или причина какая была?
>
> прекратил операцию и объяснил это нехваткой памяти.
И, я думаю, правильно обьяснил. Ты втянул на клиента туеву хучу инфы.Она ведь должна где-нибудь храниться ? Думаю, это обьясняет и
> вот вопрос. как перейти к 200000 записи? вопрос банален,
> но все же.
Выкинь IBTable, используй IBDataSet(или IBQuery) и включи UniDirectional=True. Курсор будет однонаправленным, при перемещении на следующую строку НД предыдущие данные освобождают память. Ха, глянул только что - у IBTable тоже есть это св-во(я просто IBX не использую)
← →
Desdechado © (2006-12-21 10:43) [6]DataPump из поставки Delphi чем не устраивает?
← →
svt (2006-12-21 10:49) [7]
> Виталий Панасенко (21.12.06 10:06) [5]
поставил значение в true... вроде работает... память не заканчивается:)
спасибо
← →
аноним (2006-12-21 11:29) [8]
> IBDataSet. вот вопрос. как перейти к 200000 записи? вопрос
> банален, но все же.
по диапазону первичного ключа, например
← →
Anatoly Podgoretsky © (2006-12-21 12:30) [9]> svt (21.12.2006 9:53:03) [3]
Начни с параметров и однонаправленых курсоров.
Страницы: 1 вся ветка
Текущий архив: 2007.03.18;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.038 c