运行目录中的所有SQL文件

时间:2010-04-06 08:28:03

标签: sql sql-server batch-processing

我有许多.sql文件,我必须运行这些文件才能在SQL Server 2005数据库上应用其他开发人员所做的更改。 文件根据以下模式命名:

0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...

有没有办法一次性运行所有这些?

12 个答案:

答案 0 :(得分:128)

使用以下命令创建.BAT文件:

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause

将此.BAT文件放在要从中执行.SQL文件的目录中,双击.BAT文件即可完成!

答案 1 :(得分:66)

使用FOR。从命令提示符:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"

答案 2 :(得分:22)

  1. 在SQL Management Studio中打开一个新查询并键入所有文件,如下所示

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  2. 转到SQL Management Studio上的“查询”菜单,确保启用了SQLCMD模式
  3. 点击SQLCMD模式;文件将以灰色选择,如下所示

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  4. 现在执行

答案 3 :(得分:18)

点击查询&gt;确保您启用了SQLCMD。管理工作室中的SQLCMD模式选项。

  1. 假设您在script1.sql,script2.sql,script3.sql,script4.sql文件夹中有四个.sql文件(c:\scripts)。

  2. 使用以下命令创建主脚本文件(Main.sql):

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql
    

    将Main.sql保存在c:\ scripts本身。

  3. 使用以下内容创建名为ExecuteScripts.bat的批处理文件:

    SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
    PAUSE
    

    请记住将<YourDatabaseName>替换为要执行脚本的数据库。例如,如果数据库是“Employee”,则命令如下:

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
    
  4. 双击同一批处理文件。

答案 4 :(得分:9)

您可以使用ApexSQL Propagate。它是一个免费工具,可在多个数据库上执行多个脚本。您可以根据需要选择任意数量的脚本,并针对一个或多个数据库(甚至多个服务器)执行它们。您可以创建脚本列表并保存它,然后只需在每次要按创建的顺序执行相同脚本时选择该列表(也可以添加多个脚本列表):

Select scripts

当选择脚本和数据库时,它们将显示在主窗口中,您只需单击“执行”按钮,所有脚本将按给定顺序在选定的数据库上执行:

Scripts execution

答案 5 :(得分:7)

一般查询

将以下行保存在记事本中,名称为 batch.bat ,并放在所有脚本文件所在的文件夹中

 for %%G in (*.sql) do sqlcmd /S servername /d databasename  -i"%%G"
    pause

示例

对于(* .sql)中的%% G,

执行sqlcmd / S NFGDDD23432 / d EMPLYEEDB -i“%% G” 暂停

如果登录失败,请使用以下代码用户名密码

for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause

for(* .sql)中的%% G执行sqlcmd / S NE8148服务器 / d EMPLYEEDB -U Scott -P 老虎 -i“%% G” 暂停

在您的脚本文件所在的文件夹中创建bat文件后,只需单击您的脚本将被执行的bat文件

答案 6 :(得分:5)

我在C#中编写an open source utility,允许您拖放许多SQL文件并开始针对数据库运行它们。

该实用程序具有以下功能:

  • 拖放脚本文件
  • 运行脚本文件目录
  • 执行期间输出消息的Sql脚本
  • 脚本通过或失败,颜色为绿色和红色(黄色表示运行)
  • 停止错误选项
  • 在错误选项
  • 上打开脚本
  • 为每个脚本运行报告并花费时间
  • 总持续时间
  • 测试数据库连接
  • Asynchronus
  • .Net 4&amp;使用SQL 2008进行测试
  • 单个exe文件
  • 随时终止连接

答案 7 :(得分:2)

我所知道你可以使用osql或sqlcmd命令来执行多个sql文件。缺点是您必须为这两个命令创建一个脚本。

Using SQLCMD to Execute Multiple SQL Server Scripts

OSQL(这适用于sql server 2000)

http://msdn.microsoft.com/en-us/library/aa213087(v=SQL.80).aspx

答案 8 :(得分:0)

您可以创建一个调用所有其他脚本的脚本。

将以下内容放入批处理文件中:

@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

运行该批处理文件时,它将在批处理文件所在的同一目录中创建一个名为all.sql的新脚本。它将在批处理文件所在的同一目录中查找扩展名为.sql的所有文件。

然后,您可以使用sqlplus user/pwd @all.sql运行所有脚本(或在创建sqlplus脚本后扩展批处理文件以调用all.sql

答案 9 :(得分:0)

要执行同一目录中的每个SQL文件,请使用以下命令:

ls | awk '{print "@"$0}' > all.sql

此命令将创建一个SQL文件,其中包含&#34; @&#34;附加目录中每个SQL文件的名称。

创建all.sql后,只需使用SQLPlus执行all.sql,这将执行all.sql中的每个sql文件。

答案 10 :(得分:0)

@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE

for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --host=ip --port=3306 --user=uid--password=ped < %%a
)

第一步:将以上行复制到记事本中,另存为蝙蝠。

第2步:在sql服务器中执行的查询中,所有Sql文件的d驱动器abc文件夹中。

步骤3:输入您的IP,用户名和密码。

答案 11 :(得分:0)

如果可以使用Interactive SQL:

1-使用以下代码创建.BAT文件:

@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause

2-更改密码和服务器名称。

3-将.BAT文件放入包含.SQL文件的文件夹中并运行它。