是否有工具可以一次执行一条 SQL 脚本?

Posted

技术标签:

【中文标题】是否有工具可以一次执行一条 SQL 脚本?【英文标题】:Are there tools that can execute a SQL script one statement at a time? 【发布时间】:2012-12-24 05:10:32 【问题描述】:

当我必须运行数据库迁移脚本时,我往往会产生很大程度的偏执,并且不会dbcli < migration.sql 那样一次性运行所有脚本。相反,我更喜欢一次运行一个命令。到目前为止,我一直在使用痛苦的复制/粘贴。

必须有一个可以做这种事情的工具,但我很难找到一个使用 Google、Wikpedia 或 ***(close 但no cigar)的工具。

这绝对是I could write myself,但它只是必须已经存在,不是吗?

这确实需要是可以从命令行运行的东西,具有一点点交互性(比如显示将要执行的语句,让你按例如 ENTER 来执行它,然后显示输出(如果有)是任何)因为服务器通常没有任何可用的 GUI。

我的特定数据库目标是 mysql,但这种工具不需要特定于数据库。

更新

与此同时,我正在用 Java 编写一个实用程序,它可以满足我的需求。

【问题讨论】:

单独的语句是否可靠地用;分隔? 如果你是 sa,Sql Server Management Studio 有调试功能,如果你 google “mysql debug”,那里有很多程序 @mellamokb 老实说,我可以编写脚本以符合任何具有此类要求的工具。如果我自己写,我只会查找以“;”结尾的行,呈现语句,其中一个选项可能是“查找语句的其余部分”,它将继续为手头的语句收集输入. ***.com/questions/8940230/… ".. 这样的工具不需要特定于 db" 实际上确实有这样的需求。在脚本级别,SQL 是非常特定于执行的,以至于仅仅弄清楚一个语句在哪里结束而另一个语句在哪里开始可能会出现问题。 【参考方案1】:

Flyway Teams 版(商业许可)还支持在Stream parameter 下一一执行语句。这不是您问题的确切答案,但它至少可以为您提供有关现有工具的信息。

【讨论】:

【参考方案2】:

很久以前,我为此写了my own tool,并且随着时间的推移一直在使用和完善它。随意使用它并提供功能建议等。

【讨论】:

【参考方案3】:

Oracle SQL Developer 将一次运行一行,只要它以分号结尾。

您可以使用其他驱动程序 (http://www.oracle.com/technetwork/products/migration/omwb-getstarted-093461.html) 连接到某些第 3 方数据库

【讨论】:

它会连接到非 Oracle 数据库吗?我一直在寻找相对独立的东西...安装开发环境只是为了运行 SQL 脚本似乎有点笨拙。 我只是用它通过上面的链接连接到 SQL Server 数据库。该应用程序大约有 260 MB,所以是的,它很重。 您是指 Microsoft SQL Server 吗?很高兴知道...如果 OQD 可以连接到 MS 产品,它可能会连接到任何东西。仅供参考,我很久以前就创建了一个程序来做我想做的事。它运行良好,但需要 Java。我正在用 C 重新实现,但它现在几乎绑定到 MySQL :(【参考方案4】:

Emacs的SQL模式支持逐行、逐区、逐文件发送。

当然,您必须学习 emacs,但它确实可以满足您的需求。

【讨论】:

有趣。我曾经是 Emacs 用户……我应该怀疑,既然 Emacs 可以做任何事情,那么 SQL 脚本执行也会是它可以做的事情……【参考方案5】:

你可以试试dbForge。有一个免费的 Express Edition,但我无法从 feature comparison list 中完全判断它是否允许您单步执行任意 SQL 脚本。

【讨论】:

可能会有赢家:dbForge 说它支持“执行脚本、选定的 SQL 片段和语句”。它是免费版本,所以我会下载并看看。 @ChristopherSchultz:我有一种感觉,这意味着您可以使用它运行脚本,也就是说,它就像 MySQL WorkBench 的替代品。调试功能似乎随 Standard+ 版本提供。 遗憾的是,它仅适用于 Microsoft Windows,我们不运行任何 Windows 服务器。 :(

以上是关于是否有工具可以一次执行一条 SQL 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

sql 同样一条查询脚本,在2个服务器里执行耗费的时间差很多,为啥?

PLSQL执行SQL脚本文件「适用批量」- 工具使用篇

在 Access DB 上执行 sql 脚本

plsql 工具命令窗口执行sql脚本问题

shell脚本编程

shell脚本怎么显示所执行的每一条命令