wazaari / mysql-parser
支持DELIMITER的MySQL文件解析器
此包的官方仓库似乎已不存在,因此该包已被冻结。
v1.0.0
2015-11-27 10:54 UTC
Requires (Dev)
- phpunit/phpunit: 4.0.*
This package is auto-updated.
Last update: 2024-04-10 02:33:02 UTC
README
MySQLParser
支持DELIMITER的MySQL文件解析器
描述
此类提供了一个支持DELIMITER的MySQL文件解析器。给定一个MySQL文件可以被解析并分割成命令,考虑到多行查询和分隔符。它不依赖于任何第三方库并且可以独立工作。
此类附带测试用例,并使用PHPUnit执行它们。以下代码给出了如何使用此类的示例。假设有一个名为 test.sql 的文件,其内容如下。
SELECT * FROM `exampl\;eTable`; DELIMITER // UPDATE `example_table` SET `a` = "asdas" WHERE `col1` = "asd"// DROP TABLE `c`// DROP TABLE `d`// DELIMITER ; DROP TABLE `a`; DROP TABLE `b`;
然后以下代码将得到以下结果
use wazaari\MySQLParser\MySQLParser; $parser = new MySQLParser(); $a = parser->parseFile("test.sql"); $a = array ( 0 => array ( 'command' => 'SELECT * FROM `exampl\;eTable`', 'delimiter' => ';', ), 1 => array ( 'command' => 'DELIMITER //', 'delimiter' => null, ), 2 => array ( 'command' => 'UPDATE `example_table` SET `a` = "asdas" WHERE `col1` = "asd"', 'delimiter' => '//', ), 3 => array ( 'command' => 'DROP TABLE `c`', 'delimiter' => '//', ), 4 => array ( 'command' => 'DROP TABLE `d`', 'delimiter' => '//', ), 5 => array ( 'command' => 'DELIMITER ;', 'delimiter' => null, ), 6 => array ( 'command' => 'DROP TABLE `a`', 'delimiter' => ';', ), 7 => array ( 'command' => 'DROP TABLE `b`', 'delimiter' => ';', ), );
安装
安装此库的首选方式是使用 Composer。包名为 wazaari/MySQLParser。请参阅这篇博客文章了解如何安装Composer包。简而言之,只需使用 composer require wazaari/MySQLParser 后跟 composer install。将自动生成适当的 .lock 文件。
开放问题
目前,已经识别了使用反斜杠转义的转义分隔符。然而,MySQL允许在引号环境中使用分隔符变量而不需要转义字符,但目前此库未识别这一点。