Importa configurazione e dati relazionali

1

Supponiamo che un utente abbia più elementi. Ogni elemento avrebbe una configurazione complessa: più tabelle con relazioni. Ogni tabella di configurazione avrebbe un id e un item_id che è una tabella FK per gli elementi.

La mia domanda è data dal fatto che abbiamo un database relazionale e esportiamo tutte le tabelle in un formato di testo (csv, json, ecc.) come possiamo reimportare questi dati per un altro oggetto come clonato? Importare solo i dati sarebbe facile poiché verrà generato un nuovo ID per ogni riga. Tuttavia, la creazione di un ID significa che le chiavi esterne non sarebbero valide.

L'unico modo in cui ho risolto questo problema è quello di archiviare i dati per primi (senza FK) per tutte le tabelle e quindi conoscere ogni tabella nuove chiavi esterne di aggiornamento PK. Potrei usare un dizionario per mappare i vecchi ID con quelli nuovi.

C'è un modo più pulito per ottenere qualcosa del genere?

    
posta GorillaApe 10.11.2017 - 13:18
fonte

2 risposte

1

Una soluzione migliore potrebbe essere quella di utilizzare il modulo "inserisci ... seleziona" dell'istruzione di inserimento. Se i tuoi articoli hanno una chiave [primaria] a incremento automatico, l'inserimento di un record senza specificare tale colonna farà sì che il database assegni un nuovo valore, che potrai quindi recuperare utilizzando una funzione specifica DBMS.

select * from month_days ; 
+----+---------+------+ 
| ID | Month   | Days | 
+----+---------+------+ 
|  1 | January |   31 | 
+----+---------+------+ 

insert into month_days ( Month, Days ) 
select 'March', Days 
from month_days ; 

select * from month_days ; 
+----+---------+------+ 
| ID | Month   | Days | 
+----+---------+------+ 
|  1 | January |   31 | 
|  2 | March   |   31 | 
+----+---------+------+ 
    
risposta data 10.11.2017 - 13:37
fonte
1

Alcuni database come SQL Server hanno un mezzo per disabilitare il test di vincolo per proprio tali scopi. Penso che sia ovvio che dovresti essere sicuro di sapere cosa stai facendo in tale modalità. Per giocare sul sicuro, si disabiliterebbero le singole regole piuttosto che disabilitare tutti i vincoli e, in caso di fallimento, rollback e quindi di abilitare nuovamente i vincoli .

    
risposta data 10.11.2017 - 15:38
fonte

Leggi altre domande sui tag