Ho un foglio Excel con circa 2.000 righe che voglio inserire nel mio database.MySQL: Inserisci se esiste una chiave esterna
Il problema è che la tabella in cui voglio inserire le 2.000 righe contiene una colonna che fa riferimento a una chiave esterna in un'altra tabella. Sfortunatamente molte query falliscono, poiché il valore della chiave esterna fornita NON esiste.
So che posso ignorare i controlli di chiavi esterne, ma questo non è quello che voglio. Non voglio ignorare i controlli delle chiavi esterne, voglio solo che le query non valide vengano eseguite.
Esempio:
INSERT INTO test (id, value) VALUES (10, 20);
INSERT INTO test (id, value) VALUES (20, 20);
La prima query fallisce, poiché TEST.id
riferimenti foobar.id
e non c'è foobar.id = 10.
Tuttavia, la seconda query dovrebbe funzionare, poiché foobar.id = 20
esiste, ma non verrà eseguita la seconda query, perché il primo ha già fallito.
È possibile che non venga visualizzato un errore nella prima query e che le altre query vengano comunque eseguite?
Potrei scrivere uno script php, ma preferirei una soluzione MySQL qui.
devono aggiungere limite 1, altrimenti ogni inserto potrebbe essere più righe. – MJB
@ MJB Suppongo che id sia la chiave primaria su 'foobar', per l'OP, quindi non è necessario * LIMIT * *. –
Se faccio così, è possibile inserire i dati solo in "test", che è già in "foobar", giusto? Ma ho nuovi dati da aggiungere, che provengono dal foglio Excel. Posso in qualche modo regolare questo, quindi posso aggiungere nuovi dati ad esso? – user375700