Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 11.06.2018, 03:15   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 383
Репутация: 16
По умолчанию Параллельное формирование двух таблиц с поиском дублей

Доброе время суток форумчане.
Есть таблица устройств в БД на FireBird (с полями «Наименование», «Тип», «Зав.номер» и т.д.) в которую из Excel экспортируются данные (устройства).
В БД добавилась вторая таблица «Человеко/часы», в которой нужно содержать только «Наименование» и «Тип» этих устройств ну и еще некоторые поля.

Поэтому при импорте в БД, мне нужно вставлять данные уже в две таблицы, но перед вставкой в таблицу «Человеко/часы», я сначало должен каждое устройство проверить на дубль, если такого устройства нет, то вставить устройство.
В файле бывает до 100 устройств.

Вот я и думаю, как мне сделать и проверку на дубли и не снижать скорость импорта при этом.
1. или при импорте каждого устройства/записи в табл. Устройств, делать запрос в таблицу «Человеко/часы»
Код:

Select ID from PEOPLE_HOURS where NAME=’наименование’ and TYPE=‘тип’

- если нет такого в таблице, то вставлять запись.
2. или в соответствующем DataSet таблицы «Человеко/часы», при проверке записи на дубль, пробегаться по всему DataSet.
3. или ПОСЛЕ импорта устройств в таблицу устройств (я ж буду знать какие устройства проимпортировались), включать уже в параллельном потоке, копирование с проверкой на дибли устройств, из таблицы устройств в таблицу «Человеко/часы».

Как лучше поступить?

Заранее спасибо за ответ.
KBO вне форума   Ответить с цитированием
Старый 13.06.2018, 16:43   #2
Баламут
Баламучу слегка...
СуперМодератор
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Адрес: Владивосток
Сообщений: 1,542
Репутация: 1059
По умолчанию

Сделать все нужные поля ключевыми не? СУБД сама решит что и как...
Баламут вне форума   Ответить с цитированием
Старый 26.06.2018, 12:47   #3
IliaIT
Участник клуба
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 952
Репутация: 508
По умолчанию

если запись уже имеет дубль то это не поможет.
Код:

Select ID from PEOPLE_HOURS where NAME=’наименование’ and TYPE=‘тип’

лучше спрашивать количество записей
Код:

Select count(ID) as val1, ID  from PEOPLE_HOURS where NAME=’наименование’ and TYPE=‘тип’

, если val1=0 нет такой пары, если =1 то есть одна пара, если >1 то руками проверяй кривые пары, записав их id куда-нибудь.
__________________
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума   Ответить с цитированием
Старый 26.06.2018, 13:06   #4
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,089
Репутация: 6385
По умолчанию

В огнептице же с 2.1 есть UPDATE OR INSERT. Можно и применить ))
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Параллельное выполнение двух кусков кода pas abc Kujivunia Паскаль 1 31.12.2016 03:07
Параллельное добавление данных в двух таблицах Avetis62 Microsoft Office Access 6 30.06.2016 16:19
Формирование итоговой динамической таблицы из двух отдельных таблиц akd2009 Microsoft Office Excel 4 27.10.2014 12:30
Параллельное скачивание или как добиться скачивания сразу двух файлов fezilk25 Работа с сетью в Delphi 5 07.02.2011 23:22
Формирование нескольких сводных таблиц FormAlDeGid Microsoft Office Excel 0 24.10.2009 12:04


16:03.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru