sql >> Base de Datos >  >> RDS >> Mysql

Dividir varias sentencias SQL en sentencias SQL individuales

No estoy seguro de que esto sea posible en absoluto. Sin duda, necesitará un conocimiento profundo de la sintaxis SQL de su DBMS de destino. Por ejemplo, justo en la parte superior de mi cabeza, esta es una sola declaración de MySQL:

INSERT INTO things
SELECT * FROM otherthings ON DUPLICATE KEY
UPDATE thingness=thingness+1

Es probable que haya construcciones en algunos DBMS que, sin un delimitador, podrían ser ambiguas.

Creo que puede verse obligado a hacerlo. Es totalmente la forma estándar de delimitar declaraciones SQL. Incluso si puede encontrar una heurística para detectar puntos de declaración de SQL probables, corre el riesgo de desastres como una cláusula "ELIMINAR DE cosas" sin DÓNDE accidental.

¿Sería aceptable doble nueva línea para nueva declaración?

No, incluso con delimitadores de punto y coma, regex no es lo suficientemente potente como para analizar SQL. Los puntos problemáticos incluirían:

';'
";"
`;`
'\';'
''';'
-- ;
#;
/*;*/

y cualquier interposición de estas estructuras. ¡Eek!