1С (Excel) → Airflow DAG → PostgreSQL (staging_client_orders)
↓
автоопределение заголовков
↓
нормализация и загрузкаfor i in range(min(10, len(df))):
row = df.iloc[i].astype(str)
if 'Клиент' in row.values or 'Заказ клиента.Номер' in row.values:
df = pd.read_excel(file_path, header=i)
print(f'Заголовки найдены на строке {i}')
breakdef parse_date(date_value):
for fmt in ['%d.%m.%Y %H:%M:%S', '%d.%m.%Y', '%Y-%m-%d']:
try:
return datetime.strptime(str(date_value), fmt).date()
except:
continue
return NoneINSERT INTO staging_client_orders (...) VALUES (%s)
ON CONFLICT (order_number, load_date) DO NOTHING;