sql-server - 如何为每次执行将过程结果存储在 SQL Server 中的新(单个)文本文件中
问题描述
下面是我的代码,它将我的 sql 结果打印到文本文件中。我的问题是:如何为每次执行创建新的文本文件,而不是将结果附加到已经创建的相同文本文件?
我正在尝试添加 >> 但它只会将结果附加到相同的文本中。
需要帮助,这不是重复的问题,因为旧问题显示了如何在同一个文本文件中写入结果,但对于我的问题,我需要创建新的,并且不想覆盖旧的文本文件。
Declare @fn varchar(8000) = 'C:\Tmp\log\out.txt';
Declare @cmd varchar(8000);
DECLARE @viewObjectIds TABLE (object_id INT);
INSERT INTO @viewObjectIds
SELECT o.object_id
FROM sys.objects AS o
WHERE o.type = 'V';
DECLARE view_cursor CURSOR FAST_FORWARD FOR
SELECT object_id FROM @viewObjectIds;
OPEN view_cursor;
FETCH NEXT FROM view_cursor INTO @object_id;
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @command =
'EXECUTE sp_refreshview '''
+ QUOTENAME(OBJECT_SCHEMA_NAME(@object_id)) + '.' + QUOTENAME(OBJECT_NAME(@object_id))
+ ''';';
PRINT @command;
SELECT @cmd = 'echo '+ @command + ' >> '+ @fn + '' ;
exec xp_cmdshell @cmd
FETCH NEXT FROM view_cursor INTO @object_id;
END
解决方案
您可以将 CURRENT_TIMESTAMP 连接到 out.txt 文件名上。将为每次执行创建一个新文件的简单解决方案。
编辑:
Declare @fn varchar(8000) = 'C:\Tmp\log\' + convert(varchar(25), current_timestamp, 120) + 'out.txt';
推荐阅读
- c++ - 如何实现一个奇怪的for循环
- javascript - 在 Javascript 中使用“this”作为函数应用
- javascript - 用于 JavaScript 中任何内容的 Setter
- r - 仅使用 geom_areas 更改 ggplot2 中的图例颜色
- python - 是否有一种更简洁的方法可以根据字符串中的特定子字符串获取多个变量的平均值
- openjpa - 无法从命令行运行 openjpa 工具
- reactjs - 反应映射每个孩子并为每个孩子添加css样式
- php - 在php中对列表进行分页
- android - 从应用程序的进程中删除 GmsBoundBrokerService
- sql - 如果sql中的所有条件都满足,如何选择记录