我想知道是否有人可以提供帮助。
我在SQL中有许多查询(所有查询都在单独的* .sql文件中)。我想知道是否有办法自动运行这些查询或批量运行它们以保存到csv或txt文件?
另外,我在这些查询中加入了变量,这些变量需要在运行查询之前每周修改一次。
感谢。
KJ
请您提供一些有关变量的额外帮助?以前我会将变量声明并设置为:
DECLARE @TW_FROM DATETIME
DECLARE @TW_TO DATETIME
SET @TW_FROM =' 2015-11-16 00:00:00&#39 ;; SET @TW_TO =' 2015-11-22 23:00:00';
如何使用sqlcmd执行此操作?
答案 0 :(得分:2)
是的,您可以使用sqlcmd来执行此操作。
首先 - 变量。您可以使用$(document).ready(function () {
$('#setpolicyform').bootstrapValidator({
message: 'This value is not valid'
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: {
policyta: {
group: '.lnbrd',
validators: {
notEmpty: {
message: 'Textarea cannot be empty'
},
stringLength: {
max: 50,
message: 'Maximum 50 Characters Required'
}
}
}
}
});
$('.textarea').wysihtml5({
events: {
load: function () {
$('.textarea').addClass('textnothide');
},
change: function () {
$('#setpolicyform').bootstrapValidator('revalidateField', 'policyta');
}
}
});
});
在.sql文件中引用变量,无论您想要替换变量。例如,
while ((read = getline(&line, &len, stream)) != -1)
{
printf("Retrieved line of length %zu :\n", read);
printf("%s", line);
}
然后使用以下命令调用sqlcmd(注意参数-v variables)
$(variablename)
要将此输出到文件,请标记>最后的filename.txt
use $(dbname);
select $(columnname) from table1 where column= '$(var1)'
如果要输出到csv,还可以使用参数-s指定分隔符(请注意带有服务器大写字母S的idfference)。所以我们现在有了
sqlcmd -S servername -d database -i "yoursqlfile.sql" -v dbname="database" columnname="column" var1="Fred"
如果要将多个命令输出到同一个csv或txt文件,请使用>>而不是>因为它添加到文件的底部,而不是替换它。
sqlcmd -S servername -d database -i "yoursqlfile.sql" -v dbname="database" columnname="column" var1="Fred" > filename.txt
要为多个脚本运行此操作,您可以将语句放在批处理文件中,然后每周更改变量。
答案 1 :(得分:1)
答案 2 :(得分:1)
将当前的scrips转换为Stored Procedure。 然后,您可以将变量传递给该变量并运行查询。
如果您有可用的SQL Server代理(SQL标准或更高版本),则可以使用它来自动运行存储过程。
否则,在Windows中使用任务计划程序可以实现相同的效果。
至于导出到CSV this会很有用。
答案 3 :(得分:1)
这取决于您的SQL Server在哪里运行。将任何内容写入所需位置可能会非常棘手。
你可以阅读有关BCP的信息。
我的建议是:
从数据库中的所有查询创建UDF(最好是内联UDF!)。比从EXCEL或任何其他合适的产品打电话给他们。您可能希望设置一个Excel,其中所有查询都在每个工作表上自动填充