szonov/sql-splitter

一个用于解析包含多个 SQL 查询的字符串并将其拆分为单个查询的库

v2.0.0 2022-10-14 08:02 UTC

This package is auto-updated.

Last update: 2024-09-14 12:39:32 UTC


README

一个用于解析包含多个 SQL 查询的字符串并将其拆分为单个查询的库

目前支持

  • Mysql(可用于 sqlite)
  • Postgresql

使用示例 :: 完整示例(来自字符串)

include "vendor/autoload.php";

use SZonov\Text\Source\Text as Input;
use SZonov\SQL\Splitter\Postgresql as Parser;
use SZonov\Text\Parser\ParserIterator as Queries;

$sql = "CREATE TABLE a (id SERIAL PRIMARY KEY, val TEXT);"
     . "INSERT INTO a (val) VALUES ('myval');";
$input   = new Input($sql);
$parser  = new Parser($input);
$queries = new Queries($parser);

foreach ($queries as $query) {
    // make something useful with single query
    echo "[" . $query . "]\n";
}

使用示例 :: 简略示例(来自文件)

include "vendor/autoload.php";

use SZonov\SQL\Splitter\Postgresql as Parser;
use SZonov\Text\Parser\ParserIterator as Queries;

$queries = new Queries(Parser::fromFile('test.sql'));

foreach ($queries as $query) {
    // make something useful with single query
    echo "[" . $query . "]\n";
}

使用示例 :: V2+ 语法

include "vendor/autoload.php";

use SZonov\SQL\Splitter\Parser;

//$queries = Parser::fromFileUsingDriver('test.sql', 'mysql')->queries();
$queries = Parser::fromFileUsingDriver('test.sql', 'pgsql')->queries();

foreach ($queries as $query) {
    // make something useful with single query
    echo "[" . $query . "]\n";
}