Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1400
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.07.10 12:02. Заголовок: Как переписать записи из одной БД в другую БД ?
Всем привет ! Столкнулся с проблемой, очень медленно идет запись из одной БД в другую БД. Т.е. когда меняешь структуру БД и имеешь 200-300 полей в базе при кол-ве записей: 150 000, то процесс обновления структуры становиться довольно утомительным занятием. Да еще нужен "бегунок" чтоб пользователь не подумал, что задача "висит" ! Вывод на экран тоже медленная операция ? Может не каждую запись отражать, а через 10% ? Можно ли как то ускорить этот процесс ? Задача на хХарборе, терминал gtwvt !
|
|
|
Ответов - 41
, стр:
1
2
3
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 1460
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.10 15:17. Заголовок: Блин, облом.... FOR..
Блин, облом.... FOR nI := 1 TO nRecno nTime2 := SECONDS() INKEY(1.33) // Обработка БАЗЫ // типа если запись обработана, то пропускаем запись @ 7,10 say LTRIM( Str( nI ) ) + "/" + LTRIM( Str( nRecno ) ) COLOR("15/1") cText := "прошло "+ SECTOTIME(nTime2 - nTime1) + " / осталось "+SECTOTIME((seconds()-nTime2)*(nRecno-nI)) ?? " "+cText NEXT Пишет почти всегда что осталось 00:00:00 Как быть ? Dima пишет: Ваши +44 не сравняются с нашими +36 ! У нас влажность большая, почти 100%... Я жару нормально переношу, в Средней Азии вырос. А здесь, ну просто кранты....
|
|
|
|
| постоянный участник
|
Пост N: 1462
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.10 16:01. Заголовок: Вот примерно сделал ..
Вот примерно сделал так Скрытый текст FUNCTION MAIM() LOCAL nI, cText, nTime1, nTime2, nRecno := 15, nTimeOneRec, nKoef :=0 SETMODE(25,70) SETCOLOR("11/1") CLEAR SCREEN ? "Тест функций подсчета количества времени обработки дляr [x]Harbour." ? PADC("",69,"-") ? " " + Version() + " - " + hb_compiler() ? ? nTime1 := SECOND() FOR nI := 1 TO nRecno nTime2 := SECONDS() cText := "прошло "+ SECTOTIME(nTime2 - nTime1) cText += " / осталось "+SECTOTIME( nKoef *(nRecno-nI) ) @ 7,10 say LTRIM( Str( nI ) ) + "/" + LTRIM( Str( nRecno ) ) COLOR("15/1") ?? " "+cText INKEY(1.45) nTimeOneRec := SECONDS() - nTime2 nKoef := MAX(nTimeOneRec,nKoef) NEXT RETURN NIL
| Только при первом запуске пишет, что осталось времени 00:00:00 ....
|
|
|
|
| |
Пост N: 1823
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.07.10 16:20. Заголовок: Andrey пишет: Тольк..
Andrey пишет: цитата: | Только при первом запуске пишет, что осталось времени 00:00:00 .... |
| Значит и выводи соответсвующую месагу при nI равным 1 и пиши что то типа время уточняется (или ориентируйся на nKoef ). Винда ведь при копировании большого кол-ва файлов тоже не сразу показывает сколько времени осталось. В Far Manager аналогично , пару секунд или около того цифры о времени просто не рисуются. ЗЫ А лучше всего вообще ни чего не рисуй пока не обработаешь хотя бы одну запись.
|
|
|
|
| |
Пост N: 146
Зарегистрирован: 12.11.06
|
|
Отправлено: 24.07.10 16:39. Заголовок: Форум - гад! Съел та..
Форум - гад! Съел такое хорошее моё сообщение... Приведу "кастрированный" вариант: sele base nc := base->(lastrec()) nj := 0 nTimer := seconds() dbgotop() do whil !Eof() ... nPer := ++nJ*100/nC nS := Seconds()-nTimer nT := nS*100/nPer // Прошло @2,21 SAY Ntoc(Int(nT/60),10,2,"0")+":"+Ntoc(nT%60,10,2,"0") // Осталось @2,34 SAY Ntoc(Int(nS/60),10,2,"0")+":"+Ntoc(nS%60,10,2,"0") // Процент выполнения @2,49 SAY Str(nPer,3) DbSkip() endd Вообще можно посмотреть функции (FUNC_NEW.PRG) и их применения в моих исходников: pOpenView Открытие окна_шаблона бегущей строки на фоне экрана дисплея. pChangeView Отражение на шаблоне процента исполнения. Передается процент pCloseView Восстановление окружающей среды программы А в Саратове по термометру 46 - спасаюсь кондиционерами дома и в авто
|
|
|
|
| постоянный участник
|
Пост N: 1463
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.10 16:55. Заголовок: Вот блин поймал прик..
|
|
|
|
| |
Пост N: 1824
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.07.10 16:56. Заголовок: AndreyZh пишет: Съе..
AndreyZh пишет: цитата: | Съел такое хорошее моё сообщение. |
| Это как ? Может ты замерз под кондиционером и не ту кнопочку нажал (вот форум и не понял) ?
|
|
|
|
| |
Пост N: 1825
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.07.10 16:58. Заголовок: Andrey пишет: Вот б..
Andrey пишет:
|
|
|
|
| |
Пост N: 147
Зарегистрирован: 12.11.06
|
|
Отправлено: 24.07.10 17:10. Заголовок: Это как ? Уже неодн..
Уже неоднократно! После нажатия "отправить" пишет, что "не удалось". Предлагается вернуться назад и повторить отправку, а набранного сочинения уже нетучки..
|
|
|
|
| |
Пост N: 1826
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.07.10 17:16. Заголовок: AndreyZh Тогда на в..
AndreyZh Тогда на всякий пожарный cлучай копируй весь текст перед отправкой в буфер обмена. ЗЫ Какой браузер используешь ? У меня в Opera и Mozilla таких проблем не было , не считая случаев когда глючил форум или мой провайдер.
|
|
|
|
| постоянный участник
|
Пост N: 1464
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.10 18:17. Заголовок: AndreyZh Не работа..
AndreyZh Не работает твой вариант ! Пример здесь Скрытый текст FUNCTION MAIN() LOCAL nI, cText, nTime1, nTime2, nRecno := 15, nT, nSec, nPer SETMODE(25,70) SETCOLOR("11/1") CLEAR SCREEN ? "Тест функций подсчета количества времени обработки дляr [x]Harbour." ? PADC("",69,"-") ? " " + Version() + " - " + hb_compiler() ? ? nTime1 := SECOND() FOR nI := 1 TO nRecno nTime2 := SECONDS() nPer := nI*100/nRecno nSec := nTime2 - nTime1 nT := nSec*100/nPer cText := "прошло " + Ntoc(Int(nT/60),10,2,"0")+":"+Ntoc(nT%60,10,2,"0") cText += " / осталось " + Ntoc(Int(nSec/60),10,2,"0")+":"+Ntoc(nSec%60,10,2,"0") @ 7,10 say LTRIM( Str( nI ) ) + "/" + LTRIM( Str( nRecno ) ) COLOR("15/1") ?? " "+cText ?? " "+TRANSFORM(nPer,"@ 999%") // Обработка БАЗЫ // Включая, пропуск обработки записей, т.е. на обработку записи тратиться 0 сек. // эмулятор обработки базы INKEY(1.45) // эмулятор обработки базы IF nI == 1 .OR. nI == 5 // пропуск обработки ELSE INKEY(0.21) // эмулятор обработки базы ENDIF NEXT RETURN NIL
| Кто следующий ?
|
|
|
|
| |
Пост N: 1828
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.07.10 18:44. Заголовок: Andrey пишет: Кто с..
Andrey пишет: Андрей ты сегодня перегрелся , пора отдохнуть :)
|
|
|
|
|
| постоянный участник
|
Пост N: 417
Зарегистрирован: 27.01.07
|
|
Отправлено: 24.07.10 19:52. Заголовок: Значицца так... 1. П..
Значицца так... 1. Прошло времени: nЗатраченноеВремя := nTime2 - nTime1 (nTime2-вычисляется при каждой итерации, nTime1-вычисляется один раз перед началом обработки). 2. Осталось времени (пропорция): nОставшеесяВремя := nЗатраченноеВремя * nВсегоЗаписей / nОбработаноЗаписей.
|
|
|
|
| постоянный участник
|
Пост N: 1466
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.10 21:43. Заголовок: PSP пишет: Значицца..
|
|
|
|
| постоянный участник
|
Пост N: 1467
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.10 21:52. Заголовок: Ура ! Вроде получило..
Ура ! Вроде получилось ! <\/u><\/a> Спасибо всем БОЛЬШОЕ ! Рабочий пример здесь .... Скрытый текст
FUNCTION MAIN() LOCAL nI, cText, nTime1, nTime2, nRecno := 55, nOst, nSec, nPer SETMODE(25,70) SETCOLOR("11/1") CLEAR SCREEN ? "Тест функций подсчета количества времени обработки дляr [x]Harbour." ? PADC("",69,"-") ? " " + Version() + " - " + hb_compiler() ? ? nTime1 := SECOND() FOR nI := 1 TO nRecno nTime2 := SECONDS() nPer := nI*100/nRecno nSec := nTime2 - nTime1 nOst := nSec * nRecno / nI - nSec cText := "прошло " + Ntoc(Int(nSec/60),,2,"0")+":"+Ntoc(nSec%60,,2,"0") cText += " / осталось " + Ntoc(Int(nOst/60),,2,"0")+":"+Ntoc(nOst%60,,2,"0") //cText := "прошло " + Ntoc(Int(nSec/60),10,2,"0")+":"+Ntoc(nSec%60,10,2,"0") //cText += " / осталось " + Ntoc(Int(nT/60),10,2,"0")+":"+Ntoc(nT%60,10,2,"0") @ 7,5 say LTRIM( Str( nI ) ) + "/" + LTRIM( Str( nRecno ) ) COLOR("15/1") ? " "+cText ?? " "+TRANSFORM(nPer,"@ 999%") // Обработка БАЗЫ // Включая, пропуск обработки записей, т.е. на обработку записи тратиться 0 сек. // эмулятор обработки базы INKEY(0.42) // эмулятор обработки базы IF nI == 1 .OR. nI == 5 // пропуск обработки ELSE INKEY(0.21) // эмулятор обработки базы ENDIF NEXT RETURN NIL
|
|
|
|
|
| |
Пост N: 1830
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.07.10 21:53. Заголовок: Andrey пишет: Это т..
Andrey пишет: цитата: | Это точно.... Башка не варит вообще.... |
| Cлухай ты же не компьютер и башка у тебя не железная , просто отдохни и с утряка все пойдет само собой ;)
|
|
|
|
| постоянный участник
|
Пост N: 1468
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.10 22:04. Заголовок: Dima пишет: просто ..
Dima пишет: цитата: | просто отдохни и с утряка все пойдет само собой ;) |
| До утра дожить надо.... А утром другие дела нужно делать... Не смотря на воскресенье....
|
|
|
|
| постоянный участник
|
Пост N: 418
Зарегистрирован: 27.01.07
|
|
Отправлено: 25.07.10 10:07. Заголовок: Andrey пишет: Может..
Andrey пишет: цитата: | Может надо nОставшеесяВремя := nЗатраченноеВремя * nВсегоЗаписей / nОбработаноЗаписей - nЗатраченноеВремя ? |
| Ну типа того... :) Я просто слеххка был нетрезв... :)
|
|
|
|
| постоянный участник
|
Пост N: 1473
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.07.10 23:23. Заголовок: Теперь другая напаст..
Теперь другая напасть. Подсчет остатка идет нормально. Но как случается 00:00 (полночь) то бегунок "глючит" !!! <\/u><\/a> Что делать ?
|
|
|
|
| |
Пост N: 1834
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.07.10 23:39. Заголовок: Andrey пишет: Но ка..
Andrey пишет: цитата: | Но как случается 00:00 (полночь) |
| А подумать ?
|
|
|
|
| постоянный участник
|
Пост N: 1476
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.07.10 00:14. Заголовок: Dima пишет: А подум..
Dima пишет: Думалка за 2 недели совсем не соображает.....
|
|
|
Ответов - 41
, стр:
1
2
3
All
[только новые]
|
|