将多个 SQL 语句拆分为单个 SQL 语句

Jus*_*tin 5 php mysql sql

简介:我希望有一个库或例程可以做到这一点,但我还没有找到这样的东西。我真的在寻找从哪里开始的方向和建议......

情况是这样的:我有一段纯文本的 SQL 命令。它可能是一个或多个 SQL 命令。我需要一种方法来分割多个 SQL 命令,以便我可以一次运行它们。Microsoft SQL Management Studio 确实具有开箱即用的此行为。

我正在尝试将此功能添加到在 Apache (Debian) 上运行的 PHP5/MySQL5 应用程序。

一些要点:

  1. 我确实需要一次运行一个。严重地。
  2. 我不想要求用户在每个 SQL 语句后输入分号。
  3. SQL 语句可以位于一行或多行,因此我无法换行 LB/CR
  4. 它至少需要支持 SELECT、UPDATE、INSERT、DELETE。
  5. 它需要支持子选择的查询
  6. 需要整齐的选项卡式 SQL 才能工作
  7. (为了可用软件的利益)我不想强迫用户输入任何类型的分隔符。

下面是一个示例 SQL 块,我需要将其拆分为两个语句:

select sMessage, 
(
    SELECT COUNT(sTag) FROM Tags WHERE ixTicket = note.ixTicket
) FROM note
select * from ticket
    WHERE (SELECT MAX(nCount) FROM Counter WHERE ixTicket = ticket.ixTicket) > 5
Run Code Online (Sandbox Code Playgroud)

我尝试了一些正则表达式尝试,但这似乎不够强大。

关于解决这个问题的方法有什么建议吗?

Bee*_*eep 0

最好的选择是要求用户在语句之间放置某种类型的分隔符。例如:要求每个语句用仅包含单词 GO 或“\”的行来界定,或者以“;”结束每个语句。

通过这种方式,您可以轻松地将单个字符串分解为单独的 SQL 语句。