Ho un'applicazione Rails 3 in cui ho bisogno di importare un file XML fornito da un sistema esterno in un database Postgres. Vorrei utilizzare qualcosa come ActiveRecord-Import ma questo non sembra gestire le funzionalità di upsert per Postgres, e alcuni dei record che inserirò saranno già esistenti, ma dovranno essere aggiornati.Bulk upsert con Ruby on Rails
La maggior parte di ciò che sto leggendo consiglia di scrivere SQL al volo, ma questo sembra un problema che potrebbe essere già stato risolto. Non riesco a trovarlo.
Grazie.
Non sono sicuro che Rails sia lo strumento giusto per questo. Hai considerato di farlo al di fuori di Rails utilizzando gli strumenti XML e PostgreSQL esistenti? –
Una volta nel database, i dati inseriti diventano modelli usati per altri scopi, modificabili attraverso il web ecc. Abbiamo convalide e associazioni sul modello. Sono preoccupato che l'interruzione dei binari ci porterà a duplicare molto lavoro e rendere difficile la manutenzione lungo la strada. –
Se si desidera eseguire le convalide di ActiveRecord, sarà necessario inserire un record alla volta. Se si desidera eseguire l'aggiornamento cumulativo + le convalide, sarà necessario impostare convalide/vincoli sul lato db. Se si desidera l'efficienza in questo caso, potrebbe essere necessario scendere a compromessi sulla manutenibilità del codice –