Un po 'di un titolo vago, spiegherò.Script SQL per creare script di inserimento
Sto scrivendo uno script SQL per creare un'istruzione di inserimento per ogni riga di una tabella nel mio database, puramente per essere in grado di applicare tali dati a un altro database.
Ecco quello che ho in questo momento:
SELECT 'INSERT INTO products (id,name,description) VALUES ('||ID||','''||name||''','''||description||''');' FROM products
e funziona benissimo, l'output di questo:
INSERT INTO products (id,name,description) VALUES (1,'Lorem','Ipsum');
INSERT INTO products (id,name,description) VALUES (2,'Lorem','Ipsum');
INSERT INTO products (id,name,description) VALUES (3,'Lorem','Ipsum');
INSERT INTO products (id,name,description) VALUES (4,'Lorem','Ipsum');
Il problema è che se uno dei campi è vuoto che fila mancherà di produrre uno script di aggiornamento, nel file di output la riga è vuota. Ovviamente, poiché ci sono più di 20 campi, alcuni facoltativi significano che quasi nessuno dei miei script viene generato.
C'è un modo per risolvere questo problema?
Cheers Chris, ha funzionato alla grande. –
Vorrei avvisarvi che questo non è sicuro da iniezioni SQL. Un singolo apostrofo in una colonna rovinerà l'SQL risultante o potrebbe essere sfruttato da un utente malintenzionato per eseguire query arbitrarie nel database. – intgr
Anche questo non genererà le stesse righe esatte. La coalescenza come sopra finirà per inserire valori di stringa vuoti in cui dovrebbe essere inserito valori NULL. –