|
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
|
||||||
Не работает DELETE для "повторяющихся" строк19.02.2024, 20:51. Показов 5339. Ответов 134
Здравствуйте, добрые люди!
Долго колупался с ускорением заполнения базы и доколупался до хорошей для меня скорости наполнения, однако без граблей не обошлось, когда я опустил проверки на точность параметров при замене данных получил дублирование для одного набора ключей записей с разной точностью. Исходная тема (Импорт данных из файла в БД) короткая, да и проблема видна когда пытаюсь отладить макрос в самой БД. Как видно из запроса есть 5 ключевых параметров и пара значимых полей в записи - это значение и его точность. Чтобы было понятно, чем больше число тем ниже точность. Итак нашел я замечательный пример и попробовал состряпать свой запрос на удаление повторяющейся записи с меньшей точностью. Для начала изобразил выборку, абы проверить правильно ли выбирает, оставил в последствии только те записи, что подлежат удалению:
0
|
||||||
| 19.02.2024, 20:51 | |
|
Ответы с готовыми решениями:
134
Клавиша delete не работает,а вот shift + delete работает 1. Реализовать функции для вставки и удаления строк аналогичные процедурам Insert и Delete в Турбо-Паскале.
|
|
919 / 292 / 58
Регистрация: 01.06.2023
Сообщений: 818
|
|
| 22.02.2024, 16:19 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
|
||
| 22.02.2024, 16:27 [ТС] | ||
|
АПДЕЙТ можно выполнить только при наличии строки, ее отсутствие порождает исключение ИНСЕРТ создает строку и если она уже есть - исключение Это природа команд
0
|
||
|
919 / 292 / 58
Регистрация: 01.06.2023
Сообщений: 818
|
|
| 22.02.2024, 16:34 | |
|
про природу Update я с Вами не соглашусь, ибо сам никогда не встречал подобных исключений. Проверил в Access через VBA - исключение нет, просто выставляется свойство RecordsAffected в 0.
0
|
|
|
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
|
||
| 22.02.2024, 16:34 [ТС] | ||
|
0
|
||
|
919 / 292 / 58
Регистрация: 01.06.2023
Сообщений: 818
|
|
| 22.02.2024, 16:37 | |
|
Попробуйте в дополнение явно начать транзакцию и закоммитить ее после всех изменений, возможно в Вашем API есть подобные методы:https://learn.microsoft.com/ru... ethods-ado
0
|
|
|
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
|
|||||
| 22.02.2024, 18:04 [ТС] | |||||
|
Добавлено через 6 минут не готов проверять потому как примеров не видел и особенностей режима тоже не знаю Добавлено через 26 минут Добавлено через 32 минуты
0
|
|||||
|
Модератор
|
||
| 22.02.2024, 18:37 | ||
|
- чем-то открываете двоичные данные, - как-то преобразовываете - запоминаете где-то выбранные записи в нужном для аксесс формате. например в текстовом или НТМ формате но надо ли формировать колоссальную базу на 10м записей? может разумнее учитывать требования последующей обработки, группируя по датам или регионам наблюдений? я это имела ввиду
0
|
||
|
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
|
|||
| 22.02.2024, 19:37 [ТС] | |||
|
Добавлено через 5 минут Такс, проверил вариант try INSERT catch UPDATE, работает только при строгом индексе по 5 основным полям: - не советую 8 минут против 4 на чистую базу, при обновлении данных даже пробовать не буду и так понятно проще очистить от мусора и динамически добавлять - удалять индекс.
0
|
|||
|
919 / 292 / 58
Регистрация: 01.06.2023
Сообщений: 818
|
||
| 22.02.2024, 19:37 | ||
0
|
||
|
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
|
|
| 22.02.2024, 19:51 | |
|
А на клиенте не пробовали делать проверку "дублей" метрик импорта перед добавлением в БД?
0
|
|
|
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
|
|||
| 22.02.2024, 19:54 [ТС] | |||
|
Добавлено через 1 минуту не понимаю, как это выглядит?
0
|
|||
|
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
|
||
| 22.02.2024, 19:57 | ||
|
и пихать/править только нужные?
0
|
||
|
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
|
||||||
| 22.02.2024, 20:12 [ТС] | ||||||
|
Добавлено через 3 минуты Добавлено через 2 минуты Добавлено через 6 минут А еще забыл добавить я сжимаю БД после работы и это входит во время но там не больше 10 секунд Добавлено через 1 минуту
0
|
||||||
|
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
|
||
| 22.02.2024, 20:26 | ||
|
1. Поднимаем рекордсет на основную таблицу, читаем ее, и и запихиваем метрики в коллекцию Rows в виде инстансов класса Row. 2. При поступлении новой метрики от парсера, проверяем коллекцию Rows на наличие дубликатов с новой метрикой (по 5 полям). 2.1. При отсутствии метрики в коллекции, создаем для нее инстанс Row, и добавляем в коллекцию Rows. 2.2.1 При наличии дубля, анализируем остальные поля, если новая метрика нам интереснее имеющейся, правим значения полей в имеющемся инстансе Row, UPDATE старой метрики в таблице, новую метрику не добавляем. 2.2.2 При наличии дубля, анализируем остальные поля, если новая метрика нам неинтересна - пропускаем. По завершении работы парсера (кончились новые метрики), мы имеем в коллекции Rows набор метрик и старых, и новых, но уже очищенных от дублей как внутри самого импортируемого пакета, так и с учетом имеющихся в Weather. Остается данные "новых" метрик загнать в рекордсет и UpdateBatch. То есть не нужна таблица Import, не нужны запросы на чистку, и в Weather, теоретически не нужен составной индекс, только ключевое поле. Я имитировал такое решение, время исполнения дольше чем штатным DAO, но в принципе приемлемое.
0
|
||
|
919 / 292 / 58
Регистрация: 01.06.2023
Сообщений: 818
|
||||
| 22.02.2024, 20:26 | ||||
0
|
||||
|
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
|
|
| 22.02.2024, 20:31 [ТС] | |
|
0
|
|
|
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
|
|
| 22.02.2024, 20:32 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
|
||
| 22.02.2024, 20:37 [ТС] | ||
|
Над чем мы сейчас бьемся? из 2 минут мы не вылезем никак! это тупо минимальнейшее время все остальное требует ресурсов в конечном итоге сводящих результат потуг на минимум
0
|
||
|
919 / 292 / 58
Регистрация: 01.06.2023
Сообщений: 818
|
|||
| 22.02.2024, 20:43 | |||
Добавлено через 4 минуты
0
|
|||
|
2 / 2 / 0
Регистрация: 03.06.2018
Сообщений: 163
|
|
| 22.02.2024, 20:44 [ТС] | |
|
Можно конечно определить потолок скорости вычистив все операции с БД и оставив только распаковку и формирование строк, но все это муторно... что даст?
0
|
|
| 22.02.2024, 20:44 | |
|
Для линейного вещественного массива найти произведение всех повторяющихся и не повторяющихся элементов Как вызвать "Delete" для строк?
Почему не работает Update, но работает аналогичный Delete?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|