Ein bisschen ein vages Titel, werde ich erklären.SQL-Skript zum Erstellen einfügen Skript
Ich schreibe ein SQL-Skript, um eine Insert-Anweisung für jede Zeile einer Tabelle in meiner Datenbank zu erstellen, nur um diese Daten wieder auf eine andere Datenbank anwenden zu können. Hier
ist das, was ich im Moment haben:
SELECT 'INSERT INTO products (id,name,description) VALUES ('||ID||','''||name||''','''||description||''');' FROM products
Und es funktioniert gut, diese Ausgabe von:
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');
Das Problem ist, wenn eines der Felder leer ist, dass Zeile fehl Erstellen Sie ein Update-Skript, in der Ausgabedatei ist die Zeile leer. Offensichtlich, da es 20+ Felder gibt, einige optionale, bedeutet dies, dass kaum eines meiner Skripte generiert wird.
Gibt es eine Möglichkeit, dieses Problem zu lösen?
Prost Chris, das hat super funktioniert. –
Ich möchte Sie warnen, dass dies von SQL-Injektionen nicht sicher ist. Ein einzelner Apostroph in einer Spalte führt zu Fehlern in der resultierenden SQL oder kann von einem Angreifer zum Ausführen beliebiger Abfragen in der Datenbank ausgenutzt werden. – intgr
Dies erzeugt auch nicht die gleichen exakten Zeilen. Die Koaleszenz wie oben wird am Ende leere String-Werte einfügen, wo NULL-Werte eingefügt werden sollen. –