代码之家  ›  专栏  ›  技术社区  ›  K.A.D.

运行目录中的所有SQL文件

  •  101
  • K.A.D.  · 技术社区  · 15 年前

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

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

    有没有办法一次就把它们全部跑完?

    11 回复  |  直到 6 年前
        1
  •  121
  •   Nathan Tuggy TonyLuigiC    8 年前

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

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

    将这个.bat文件放在您希望从中执行.sql文件的目录中,双击.bat文件,您就完成了!

        2
  •  65
  •   Tao    13 年前

    使用 FOR . 从命令提示:

    c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
    
        3
  •  22
  •   Nathan Tuggy TonyLuigiC    8 年前
    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. 现在执行
        4
  •  18
  •   Nathan Tuggy TonyLuigiC    8 年前

    通过单击Management Studio中的查询>sqlcmd模式选项,确保已启用sqlcmd。

    1. 假设您有四个.sql文件( script1.sql,script2.sql,script3.sql,script4.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:\脚本本身中。

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

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

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

      SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
      PAUSE
      
    4. 通过双击批处理文件来执行该批处理文件。

        5
  •  9
  •   Kevin L    7 年前

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

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

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

    Select scripts

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

    Scripts execution

        6
  •  6
  •   Lijo    9 年前

    通用查询

    在记事本中用名称保存以下行 批处理文件 把你所有的脚本文件放在文件夹里

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

    例子

    对于“%”g in(*.sql)执行sqlcmd/s NFGDDD24432 D 电磁脉冲 -“%%G” 暂停

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

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

    对于“%”g in(*.sql)执行sqlcmd/s NE8148Server D 电磁脉冲 -U 斯科特 -P 老虎 -I“%%g” 暂停

    在脚本文件所在的文件夹中创建BAT文件后,只需单击BAT文件,脚本就会执行。

        7
  •  5
  •   Cody Gray    8 年前

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

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

    • 拖放脚本文件
    • 运行脚本文件目录
    • SQL脚本在执行期间输出消息
    • 绿色和红色(黄色表示运行)的脚本通过或失败
    • 错误时停止选项
    • 错误时打开脚本选项
    • 运行每个脚本所用时间的报告
    • 总持续时间
    • 测试数据库连接
    • 不同步
    • .NET 4与SQL 2008一起测试
    • 单个exe文件
    • 随时终止连接
        8
  •  2
  •   A G    15 年前

    据我所知,您可以使用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

        9
  •  0
  •   lucian.pantelimon    11 年前

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

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

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

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

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

        10
  •  0
  •   jww avp    8 年前

    要在同一目录上执行每个sqlfile,请使用以下命令:

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

    此命令将创建一个SQL文件,目录中每个SQL文件的名称都附加“@”。

    all.sql 只需执行即可创建 全部.sql 使用sqlplus,这将执行 所有的SQL .

        11
  •  0
  •   Suraj Kumar zip    6 年前
    @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
    )
    

    步骤1:将上面的行复制到记事本中,另存为BAT。

    步骤2:在D驱动器abc文件夹中,在SQL Server中执行的查询的所有SQL文件中。

    第三步:给出你的IP,用户ID和密码。