A PHP library for splitting multi-query SQL files into individual statements. Handles database-specific syntax like custom delimiters, dollar-quoted strings, and BEGIN...END blocks. Processes files in chunks for memory efficiency.
- MySQL -- backtick identifiers,
DELIMITERcommand,#comments - PostgreSQL -- dollar-quoted strings (
$BODY$...$BODY$),E'...'escape strings - SQL Server --
[bracketed]identifiers,BEGIN...ENDblocks
All parsers handle standard SQL comments (--, /* */), quoted strings, and semicolon delimiters.
composer require nextras/multi-query-parserRequires PHP 8.0+.
Parse a SQL file:
use Nextras\MultiQueryParser\MySqlMultiQueryParser;
$parser = new MySqlMultiQueryParser();
foreach ($parser->parseFile('migrations.sql') as $query) {
$connection->query($query);
}Parse a string:
$sql = "CREATE TABLE users (id INT); INSERT INTO users VALUES (1);";
foreach ($parser->parseString($sql) as $query) {
$connection->query($query);
}Parse from a file stream:
$stream = fopen('migrations.sql', 'r');
foreach ($parser->parseFileStream($stream) as $query) {
$connection->query($query);
}Available parsers: MySqlMultiQueryParser, PostgreSqlMultiQueryParser, SqlServerMultiQueryParser.
MIT. See full license.