Ich bin mir nicht sicher, ob das überhaupt möglich ist. Sie benötigen sicherlich fundierte Kenntnisse der SQL-Syntax Ihres Ziel-DBMS. Zum Beispiel ist dies eine einzelne MySQL-Anweisung, die mir spontan eingefallen ist:
INSERT INTO things
SELECT * FROM otherthings ON DUPLICATE KEY
UPDATE thingness=thingness+1
Es ist wahrscheinlich, dass es in einigen DBMS Konstrukte gibt, die ohne Trennzeichen mehrdeutig sein könnten.
Ich denke, man wird dazu gezwungen. Dies ist die Standardmethode zum Trennen von SQL-Anweisungen. Selbst wenn Sie eine Heuristik finden können, um wahrscheinliche Anfangspunkte von SQL-Anweisungen zu erkennen, riskieren Sie Katastrophen wie eine versehentliche „DELETE FROM things“-ohne-WHERE-Klausel.
Wäre ein doppelter Zeilenumbruch für eine neue Anweisung akzeptabel?
Nein, sogar mit Semikolon-Trennzeichen, Regex ist bei weitem nicht leistungsfähig genug, um SQL zu parsen. Zu den Problempunkten gehören:
';'
";"
`;`
'\';'
''';'
-- ;
#;
/*;*/
und jede Zwischenschaltung dieser Strukturen. Eek!