|
Помогите таблицы
|
|||
---|---|---|---|
#18+
Есть 2 одинаковые таблицы. Отличаются количеством записей 1 таблица - 30 000 и 2 таблица - 32 000. Записи содержащиеся в 1 таблице могут отличаться от второй, но не все. Вопрос: как быстро сопоставить таблицы и добавить 2000-3000 записей, недостающих в первой таблице, из второй таблицы? Не хочеться тупо перебирать. Долго. Надеюсь на вашу помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2009, 11:38 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
По каким критериям вы собираетесь определять что такая запись уже есть? По содержимому вообще всех полей или по некоторым ключевым полям? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2009, 12:14 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
Rickitiki, сформируйте временный "составной" индекс для таблицы с меньшим количеством записей (включающий поля, по которым предполагается сравнение) и затем просканируйте другую. IF !seek(<индексное выражение>) - то добавляете запись. Работы на 5 минут ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2009, 12:24 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
GermanGM, Проверка производиться по трем полям. Хотелось бы не перебором, а каким нибудь select-ом, исключающим повторения. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2009, 11:58 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
Rickitiki, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Собственно нужен уникальный ID в обеих одинаковых по структуре таблицах iType = 1 - существующие и в table1 и в table2, но изменившиеся iType = 2 - существующие в table1 но не в table2 iType = 3 - существующие в table2 но не в table1 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2009, 09:13 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
alextashk, спасибо, но вторую таблицу беру с инета (с официально сайта), в аксесе, перегоняю в фокс. обновление таблицы в нете, каждый месяц. первая таблица добавляется своими записями тоже. Уникальный ключ можно сделать первой таблице, а второй? может как-то через select DISTINCT, но у меня не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2009, 14:41 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
Rickitiki, Всегда есть поля, или группа полей, которые можно использовать как ID строки. Выложи, что получаешь из Interneta ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2009, 14:43 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
alextashk, Уже преобразованная таблица. сократил до 2000 записей. проверка полей mfg_name, wmi, wmi_ext, year ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2009, 15:05 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
Rickitiki, в этом случае, возможно отслеживать только добавление и удаление Код: plaintext 1. 2. 3. 4. 5. 6. 7.
mfg_name+wmi+wmi_ext+year является уникальным ID, поскольку выборка SELECT mfg_name+wmi+wmi_ext+year, COUNT(*) FROM wmi1 из 2000 записей дала 2000 записей iType = 2 - существующие в table1 но не в table2 iType = 3 - существующие в table2 но не в table1 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2009, 15:20 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
alextashk, спасибо, шас попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2009, 15:33 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
Rickitiki, еще раз спасибо, правда очень долго, около 9 мин ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2009, 16:32 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
Rickitiki, не в обиду будь сказано: SCAN работает быстрее... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2009, 16:35 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
GermanGM, попробую. может вы правы ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2009, 16:52 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
GermanGM, Scan-ом вышло около 11 мин ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2009, 13:47 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
RickitikiScan-ом вышло около 11 мин А индекс-то создавали, как рекомендовалось? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2009, 16:14 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
tanglir, вот пример кода может че не так, поправте пожалуйста Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2009, 17:13 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
Код: plaintext
Почитайте про индексы. ЗЫ. Ну как-то так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2009, 19:29 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
Очепятка. Надо не SEEK, а !SEEK, как и советовали выше старшие товарищи. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2009, 19:32 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
Еще один вариант "до кучи" Код: 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.
В результате, в получившемся курсоре curUniq будут только уникальные записи, которые не повторяются. А значение поля tabNum будет содержать идентификатор таблицы, в которой эта запись находится. Условие отбора HAVING Count(distinct tabNum) = 1 говорит о том, что если дубль есть в рамках одной таблицы, то обе эти записи должны попасть в результирующую выборку. Если стоит задача исключить еще дубли в рамках одной таблицы (взять только одно значение дубля), то задача сильно усложняется. Если надо оставить только уникальные записи из второй таблицы, то условие можно дополнить так Код: plaintext
PS: Кстати, думаю ваш пример со SCAN работал в два раза дольше по той причине, что вы при поиске оборачивали поля в UPPER(ALLTRIM()). Или в Select-SQL вы делали то же самое? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2009, 20:26 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
tanglir, Супер, огромное спасибо - 1 секунда, правда программно индекс создать не удается, пишет invalid key lenght, как это исправить. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2009, 11:07 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
tanglir Код: plaintext
Почитайте про индексы. ЗЫ. Ну как-то так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Подскажите где почитать про индексы? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2009, 11:12 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
VFP9 HelpInvalid key length (Error 112) If you created an index key that exceeds the following limits, create a shorter index key. The length of an index key for an index or compiled index (.idx) must be between 1 and 100 characters. The length for a compound index (.cdx) must between 1 and 240 characters. <...> When Visual FoxPro creates an index, it evaluates fields in the first record in the table. В хелпе про индексы основное написано. Фокс пишет, что индексное выражение получается слишком длинным (более 240 символов). Странно, вот так (вбил максимально длинные значения в поля) Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2009, 14:00 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
tanglirVFP9 HelpInvalid key length (Error 112) If you created an index key that exceeds the following limits, create a shorter index key. The length of an index key for an index or compiled index (.idx) must be between 1 and 100 characters. The length for a compound index (.cdx) must between 1 and 240 characters. <...> When Visual FoxPro creates an index, it evaluates fields in the first record in the table. F почему важный следующий абзац не процитировали? Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2009, 14:07 |
|
Помогите таблицы
|
|||
---|---|---|---|
#18+
проходящий., Признаю, забыл и недоглядел. Тогда не получится (проверил). Или индексировать по сумме left-ов от полей, что тоже плохо - могут попасться совпадающие начала. А может просто поставить другой collate (general, например)? Надо ведь (не)равенство проверять, а не "больше-меньше". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2009, 14:13 |
|
|
start [/forum/search_topic.php?author=babkavkedax&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 1774ms |
total: | 1947ms |
0 / 0 |