sql >> Database >  >> RDS >> Mysql

Splits meerdere SQL-instructies in afzonderlijke SQL-instructies

Ik weet niet zeker of dit überhaupt mogelijk is. U hebt zeker een grondige kennis van de SQL-syntaxis van uw doel-DBMS nodig. Dit is bijvoorbeeld zo uit mijn hoofd een enkele MySQL-statement:

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

Het is waarschijnlijk dat er constructies in sommige DBMS'en zijn die, zonder scheidingsteken, dubbelzinnig zouden kunnen zijn.

Ik denk dat je misschien gedwongen wordt. Het is absoluut de standaardmanier om SQL-instructies af te bakenen. Zelfs als je een heuristiek kunt vinden om waarschijnlijk-begin-van-SQL-instructiepunten te detecteren, riskeer je rampen zoals een onbedoelde "VERWIJDEREN VAN dingen"-zonder-WAAR-clausule.

Zou dubbele-nieuweregel-voor-nieuwe-verklaring acceptabel zijn?

Nee, zelfs met scheidingstekens met puntkomma's, regex is lang niet krachtig genoeg om SQL te ontleden. Probleempunten zijn onder meer:

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

en eventuele tussenkomst van deze structuren. Eek!



  1. Wat is er mis met deze MySQL-instructie:DECLARE @ID INT

  2. Sphinx zonder een auto_increment id te gebruiken

  3. Hoe vul ik de tweede vervolgkeuzelijst in op basis van de selectie van de eerste vervolgkeuzelijst met jQuery/AJAX en PHP/MySQL?

  4. Percona-distributie voor PostgreSQL implementeren voor hoge beschikbaarheid