Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Выгрузка из текст. файла в базу access: 8000 строк 47 минут?!
|
|||
|---|---|---|---|
|
#18+
Всем привет!!! Имею: 1. текстовый файл, ~ 8000 строк. Пример строк(2-е строки): ------------------------txt----------------- "6153","..........VIPER (Solingen)","..Маникюрные наборы Solingen VIPER","sv Набор педикюрный SET-1 (4-предмета)" "6453","..........VIPER (Solingen)","..Маникюрные наборы Solingen VIPER","sv Набор педикюрный SET-45 (4-предмета)" -------------------------------------------- 2. Базу ACCESS : Три связанные таблицы. Для раздела,для подраздела, для наименований товара. ------------------ Все ничего, вроде работает нормально, но на выгрузку строк из файла нужно 47 минут!!! В чем проблема??? Код выгрузки: Do While Not ts.AtEndOfStream MyArray = Split(ts.ReadLine, razdelitel_for_split) id = Replace(Replace(MyArray(0), Chr(34), ""), ".", "") count = count + 1 If MyArray.Length = 4 Then lavel1 = Replace(Replace(MyArray(1), Chr(34), ""), ".", "") lavel2 = Replace(Replace(MyArray(1), Chr(34), ""), ".", "") lavel3 = Replace(Replace(MyArray(2), Chr(34), ""), ".", "") End If If MyArray.Length = 5 Then lavel1 = Replace(Replace(MyArray(1), Chr(34), ""), ".", "") lavel2 = Replace(Replace(MyArray(2), Chr(34), ""), ".", "") lavel3 = Replace(MyArray(3), Chr(34), "") End If If n.FillBy(lavel1.ToString).HasValue = False Then n.Insert(lavel1.ToString, True) q1 = n.FillBy(lavel1.ToString).Value.ToString Else q1 = n.FillBy(lavel1.ToString).Value.ToString n.UpdateQuery(lavel1.ToString, True, q1) End If If n2.FillBy(lavel2.ToString, q1.ToString).HasValue = False Then n2.Insert(q1.ToString, lavel2, True) q2 = n2.FillBy(lavel2.ToString, q1.ToString).Value.ToString Else q2 = n2.FillBy(lavel2.ToString, q1.ToString).Value.ToString n2.Update(q1.ToString, lavel2, True, q2.ToString) End If 'Здесь автоматически можно проставлять новинки при добавлении записи If n3.FillBy_naim3_id(id.ToString, q2.ToString).HasValue = False Then n3.Insert(q2.ToString, id.ToString, lavel3.ToString, False, True) q3 = n3.FillBy_naim3_id(id.ToString, q2.ToString).Value.ToString Else q3 = n3.FillBy_naim3_id(id.ToString, q2.ToString).Value.ToString n3.Update(q2.ToString, id.ToString, lavel3.ToString, False, True, q3.ToString) End If MyArray = Nothing Loop ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 15:50 |
|
||
|
Выгрузка из текст. файла в базу access: 8000 строк 47 минут?!
|
|||
|---|---|---|---|
|
#18+
авторВсе ничего, вроде работает нормально, но на выгрузку строк из файла нужно 47 минут!!! В чем проблема??? ну как в чём? наверное код не очень ;) у меня например в Win-приложении для такой задачи уходит минуты 2-3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 16:53 |
|
||
|
Выгрузка из текст. файла в базу access: 8000 строк 47 минут?!
|
|||
|---|---|---|---|
|
#18+
vladgrig авторВсе ничего, вроде работает нормально, но на выгрузку строк из файла нужно 47 минут!!! В чем проблема??? ну как в чём? наверное код не очень ;) у меня например в Win-приложении для такой задачи уходит минуты 2-3 А что в коде? Какие нибудь предложения по оптимизации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 17:06 |
|
||
|
Выгрузка из текст. файла в базу access: 8000 строк 47 минут?!
|
|||
|---|---|---|---|
|
#18+
Использую dataset... запросы простые.... А насчет разбития строки, вроде всегда так делал.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 17:08 |
|
||
|
Выгрузка из текст. файла в базу access: 8000 строк 47 минут?!
|
|||
|---|---|---|---|
|
#18+
;-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 13:53 |
|
||
|
Выгрузка из текст. файла в базу access: 8000 строк 47 минут?!
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. расскажи что это такое и для чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 15:25 |
|
||
|
Выгрузка из текст. файла в базу access: 8000 строк 47 минут?!
|
|||
|---|---|---|---|
|
#18+
Ну вобщем есть три таблицы... Naimenovanie Структура: naim_id - Ключевое поле (счетчик) lavel1 - Текстовое поле для основного раздела notdeleteafterupdate - boolean, тоесть когда обновляем все записи, ставим галочку, типа удалять не нужно. После занесения записей пользователю выдается список значений из базы, которые не отмечены галочкой.Это говорит о том, что в таблице есть лишние строки, оставшиеся с прошлой загрузки и что их при желании можно удалить.Если не удаляем, то все галочки снимаются... Связи: Связь с таблицей Naimenovanie2 по полю naim_id Запросы: n.FillBy: SELECT naim_id FROM naimenovanie WHERE (lavel1 = ?) n.UpdateQuery: UPDATE `naimenovanie` SET `lavel1` = ?, `notdeleteafterupdate` = ? WHERE ((`naim_id` = ?)) -------- Naimenovanie2 Структура: naim2_id - Ключевое поле (счетчик) naim_id lavel2 - Текстовое поле для основного раздела notdeleteafterupdate - boolean,тоже , что и в предыд. Связи: Связь с таблицей Naimenovanie3 по полю naim2_id Запросы: n2.FillBy:SELECT naim2_id FROM naimenovanie2 WHERE (lavel2 = ?) AND (naim_id = ?) n2.Update:UPDATE `naimenovanie2` SET `naim_id` = ?, `lavel2` = ?, `notdeleteafterupdate` = ? WHERE ((`naim2_id` = ?)) ------ Naimenovanie3 Структура: naim3_id - Ключевое поле (счетчик) naim2_id lavel3 - Текстовое поле для основного раздела notdeleteafterupdate - boolean,тоже , что и в предыд. id - id записи из текст. файла isnew -"новинки" или нет Запросы: n3.FillBy_naim3_id:SELECT naim3_id FROM naimenovanie3 WHERE (id = ?) AND (naim2_id = ?) -------------- Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Ну вроде все.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 16:21 |
|
||
|
Выгрузка из текст. файла в базу access: 8000 строк 47 минут?!
|
|||
|---|---|---|---|
|
#18+
ну а теперь вдумайся - сколько по времени должно занимать создать запрос к таблице БД с параметром по твоему значению, вернуть или не вернуть полученную строку и после этого внести или невнести (а то и просто тупо апдейтить уже существующее) значение... и так три раза для каждого значения считанной строки... 8000*3 - вот и посчитай... P.S. может сделать эти поля в БД уникальными и, просто добавлять значения - пусть сервер сам разбирается надо это значение вносить или нет!!!??? P.P.S. у меня, вроде тоже, пока, всё... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 17:14 |
|
||
|
Выгрузка из текст. файла в базу access: 8000 строк 47 минут?!
|
|||
|---|---|---|---|
|
#18+
vladgrigну а теперь вдумайся - сколько по времени должно занимать создать запрос к таблице БД с параметром по твоему значению, вернуть или не вернуть полученную строку и после этого внести или невнести (а то и просто тупо апдейтить уже существующее) значение... и так три раза для каждого значения считанной строки... 8000*3 - вот и посчитай... P.S. может сделать эти поля в БД уникальными и, просто добавлять значения - пусть сервер сам разбирается надо это значение вносить или нет!!!??? P.P.S. у меня, вроде тоже, пока, всё... ;) Ну да!!!! :-) Конечно же понятно, что число операций большое. Но мне казалось, что количество затраченного времени должно быть меньше... Что касается кода, то вроде ошибок нет. Мне казалось, что проблема в ACCESS-е. Чесно говоря на SQL Ser. не пробовал. ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 17:25 |
|
||
|
Выгрузка из текст. файла в базу access: 8000 строк 47 минут?!
|
|||
|---|---|---|---|
|
#18+
авторКонечно же понятно, что число операций большое. Но мне казалось, что количество затраченного времени должно быть меньше... пойми одно - не число операций играет роль (хотя это тоже немаловажно)... самое главное, в твоём случае, это глупая выборка из таблиц БД строк по запросу - вот это засада... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 17:58 |
|
||
|
|

start [/forum/topic.php?fid=18&fpage=952&tid=1392510]: |
0ms |
get settings: |
6ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 354ms |

| 0 / 0 |
