|  | Сравнить данные регистра и ТЗ в запросе 
 Волшебник, Мультук , Eugene555 , Fish , okmail , boozin , unenu , Terrixus , DimR_71 , Доминошник , Климов Сергей , Толич , timurhv , Михаил Козлов , Ногаминебить , takefive , NorthWind , Ivanich , Шаграм , Timon1405 , Prog_man , Kigo_Kigo , d4rkmesa , maxar , mortal , Elf_80_lvl , Гипервизор , АгентБезопаснойНацио , alexxx961503 , craxx , abfm , lucky_ , obs191 , Vostochnick , formista2000 , DeeK , ReaLg , yurikmellon2 , Gucci76 , АнализДанных , orakool , strange2007 , Asmody | ☑ | 
    
        | 0
    
        Elf_80_lvl   14.08.25✎ 15:39 | 
        Возникла задача. Нужно периодически загружать некий файл csv с примитивными типами данных условно Идентификатор, Дата в периодический независимый регистр сведений с теми же измерениями Идентификатор, Дата.
При этом в файле могут быть как новые данные так и ранее уже загруженный Идентификатор с другой датой.
 Смысл в том, чтобы из файла вычленить только новые и измененные данные по сравнению с данными регистра.
 Проблема в том, что файл довольно большой несколько миллионов записей, нужен максимально производительный алгоритм.
 
 Я читаю файл, парсю его в таблицу значений, передаю это в запрос, там же выбираю срез последних с регистра и не могу сообразить как их связать. При связи же отсекутся данные которых нет в обоих источниках, правильно же?
 |  | 
    
        | 1
    
        Fish   гуру 14.08.25✎ 15:42 | 
        " При связи же отсекутся данные которых нет в обоих источниках" - Смотря как соединять.     |  | 
    
        | 2
    
        Elf_80_lvl   14.08.25✎ 15:45 | 
        Да как обычно, написал и понял, как решить. Надо уже просто в блокнотик писать свой вопрос, может, озарение будет работать, как и с форумом =)
Конечно, надо просто левое соединение к файлу делать.
 |  | 
    
        | 3
    
        Fish   гуру 14.08.25✎ 15:50 | 
        (2) Тогда ты потеряешь новые данные, которые есть только в файле.     |  | 
    
        | 4
    
        Волшебник   14.08.25✎ 15:52 | 
        Fish намекает, что здесь подойдёт ПОЛНОЕ СОЕДИНЕНИЕ     |  | 
    
        | 5
    
        Elf_80_lvl   14.08.25✎ 15:54 | 
        Так, похоже надо освежить в памяти главу по соединениям в запросе. Спасибо.     |  | 
    
        | 6
    
        Fish   гуру 14.08.25✎ 15:58 | 
        (4) Нет, подойдёт левое, но смотря как понять фразу "левое соединение к файлу "
 Я понял так, что основная таблица - это регистр, а левым соединением файл.
 А правильно будет наоборот.
 |  | 
    
        | 7
    
        Волшебник   14.08.25✎ 15:59 | 
        (6) тоже вариант     |  | 
    
        | 8
    
        Elf_80_lvl   14.08.25✎ 16:04 | 
        Нет, основная таблица это файл который на текущий момент актуален и надо регистр привести в соответствие с этим файлом. Тоесть дописать в регистр не 5 миллионов записей, а только изменения     |  | 
    
        | 9
    
        Fish   гуру 14.08.25✎ 16:05 | 
        (8) Ну тогда всё верно. Левым соединением по ИД цепляешь регистр, а дальше отбираешь только те, которые не соединились и те, у которых есть изменения.     |  | 
    
        | 10
    
        Fish   гуру 14.08.25✎ 16:06 | 
        (8) "надо регистр привести в соответствие с этим файлом" - А вот это несколько расходится с (0) "вычленить только новые и измененные данные по сравнению с данными регистра."
 Что делать с записями, которых нет в файле? Если надо "привести в соответствие с этим файлом", то их надо бы удалять, тогда (9) не пойдёт.
 |  | 
    
        | 11
    
        Elf_80_lvl   14.08.25✎ 16:08 | 
        (10) Да этот вопрос у меня тоже возник и я задал его заказчику. Он задаст его ещё куда то... Короче дело не быстрое =)
Но на данный момент хочу хотя бы изменения и добавления выловить.
 Спасибо за подсказку.
 |  | 
    
        | 12
    
        unenu   14.08.25✎ 17:04 | 
        Относительно Источника и Приемника у вас два вида данных к обработке:
 1. ПакетНовыхИд
 2. ПакетИдСИзменениямиБД
 
 используйте ВыполнитьПакет()
 
 Затем выполните запись новых по первому пакету и
 изменение существующих по второму.
 
 Стремление получить все данные(к обработке) в одном
 результате запроса не принесет выгоды - количество записей будет то же самое. Но вам придется писать дополнительные условия при обработке записи нового или модификации существующего.
 
 Думаю, ИИ ответил бы что-то подобное.
 |  |