Слава - Стань сильней
UPSERT в БД Oracle (Python, SQLAlchemy)
Всем привет. Я дата-инженер и достаточно долгое время работал с БД PostgreSQL. Сменив работу я столкнулся с Oracle и его особенностями. Например, с отсутствием такой удобной конструкции при записи данных, как INSERT... ON CONFLICT DO UPDATE. Есть ее аналог, но чтобы понять объяснение из документации, нужно напрягать мозг. Напишу в том виде, в котором это было бы понятно мне, когда я впервые это увидел. Может, пригодится еще кому-то. Для записи я использую Python и SQLAlchemy, но программного кода здесь не будет, только SQL в нужном формате. Итак, вместо "INSERT … ON CONFLICT DO... "в Oracle используется MERGE...
Чтение XML файла. База "шиворот навыворот"
Oracle отдает значения элементов XML файла посредством пакетных функций. Задача Часто "программисты" и "базисты" - иногда с веселой взаимной иронией, иногда довольно жестко - спорят о том, что есть база. Для ортодоксальных программистов база - это лишь хранилище данных, а вся обработка ведется в программном коде; для ортодоксальных базистов база - это всё, а программный код над ней - это что-то не очень-то и нужное, благо Oracle APEX дал им в руки мощный козырь в этом споре. Намедни пришлось решить задачу, подход к которой идеологически показался еще более решительным...