Un poco un título vago, lo explicaré.Secuencia de comandos SQL para crear una secuencia de comandos de inserción
Estoy escribiendo una secuencia de comandos SQL para crear una declaración de inserción para cada fila de una tabla en mi base de datos, simplemente para poder volver a aplicar esa información a otra base de datos.
Aquí es lo que tengo en este momento:
SELECT 'INSERT INTO products (id,name,description) VALUES ('||ID||','''||name||''','''||description||''');' FROM products
y funciona muy bien, dar salida a esto:
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');
El problema es que si uno de los campos está vacía esa fila dejará de producir una secuencia de comandos de actualización, en el archivo de salida la línea está en blanco. Obviamente, como hay más de 20 campos, algunos opcionales significa que casi ninguno de mis scripts se genera.
¿Hay alguna manera de solucionar este problema?
Saludos Chris, esto funcionó muy bien. –
Me gustaría advertirle que esto no es seguro a partir de las inyecciones de SQL. Un solo apóstrofo en una columna arruinará su SQL resultante, o podría ser explotable por un atacante para ejecutar consultas arbitrarias en su base de datos. – intgr
Esto tampoco generará las mismas filas exactas. La unión como arriba terminará insertando valores de cadena vacíos donde debería estar insertando valores NULL. –