Sqlcmd批处理脚本

时间:2012-12-13 13:31:09

标签: sqlcmd

在我的sqlserver项目中,在不同的文件夹中有很多.sql文件 C:\用户名\ EtlcontrolDB \ scrip1.sql ......... script10.sql
C:\用户名\配置\ scrip1.sql ......... script10.sql
C:\用户名\想到...........................

我的客户端要求是,上面的文件夹包含通过单批脚本执行的sql文件。和来自.txt文件的cql文件名和文件路径输入以及C:\ username这个对于每个用户都是不同的,保留路径对所有用户来说都是相似的, 我还想完全执行一些文件夹和一些特定于文件夹的sql文件

任何人都可以帮我这个吗? 提前谢谢......

1 个答案:

答案 0 :(得分:0)

单独使用sqlcmd无法做到这一点。

您必须使用python等语言编写批处理脚本,该语言为存储在指定目录中的每个.sql文件调用sqlcmd。这是Python中的一个例子(未经测试!):

import subprocess
from os import listdir
from os.path import isfile, join

def main():
    onlyfiles = [ f for f in listdir('C:\username\EtlcontrolDB\') if isfile(join('C:\username\EtlcontrolDB\',f)) ]
    for f in onlyfiles:
        sqlcmd(f)

def sqlcmd( file ):
    query = open(file).read()
    sqlcommand = 'sqlcmd -Q ' + query + ' -S "Myserver" -U UserName -P Password'
    subprocess.call(sqlcommand)

main()