使用计划作业 SQL Agent Management Studio 导出到 CSV

2023-12-04

我正在尝试创建一个 SQL 代理作业,该作业每天自动运行以下查询并生成一个 CSV 文件,该文件存储在 C:\test.csv 上,并通过电子邮件发送给人们。

我在网上尝试了各种选项,但找不到适合我的查询的选项。它是来自多个数据集的数据,放入单个文件中,以便导入到另一个电子表格中进行报告。

如有任何帮助,我们将不胜感激。

我已经使用执行查询的任务创建了一个 SQL 作业,并且尝试使用高级页面上的高级选项来输出文件,但是,输出文件没有更新。

use Prod_data
declare @ReportingStart datetime = dateadd(HH,-17,convert(datetime,convert(date,getdate())))
declare @ReportingEnd datetime = dateadd(HH,7,convert(datetime,convert(date,getdate())))


-- Daily Production time
declare @Production float = (select sum(dDurationSeconds/60)
from OEEQStateData
where tstart >= @ReportingStart and tstart < @ReportingEnd
and sStateDescription = 'Production'and sWorkcellDescription ='Hoisting')

-- Daily Idle time
declare @Idle float = (select isnull(sum(dDurationSeconds/60),0)
from OEEQStateData
where tstart >= @ReportingStart and tstart < @ReportingEnd
and sStateDescription = 'Idle Time'and sWorkcellDescription ='Hoisting')

-- Daily Unplanned time
declare @Unplanned float = (select sum(dDurationSeconds/60)
from OEEQStateData
where tstart >= @ReportingStart and tstart < @ReportingEnd
and sStateDescription like 'Unplanned%'and sWorkcellDescription ='Hoisting')

--Daily Maintenance time
declare @Planned float = (select sum(dDurationSeconds/60)
from OEEQStateData
where tstart >= @ReportingStart and tstart < @ReportingEnd
and sStateDescription like 'Planned%'and sWorkcellDescription ='Hoisting')

--Util
declare @Util float = @Production/(1440-@Planned-@Unplanned)

--Avail
declare @Avail float = ((@Production+@Idle)/1440)

--Hoist Schedule
declare @HoistSched int = (select round(DS_Prod+NS_Prod,-2)
from Schedule
where date = convert(date,@ReportingStart))


--Hoist Schedule for tomorrow 
declare @HoistSchedTom int = (select round(DS_Prod+NS_Prod,-2) 
from Schedule
where date = convert(date,@ReportingEnd))

--PM for tommorrow
declare @PM int = (select (DS_DT+NS_DT) 
from Schedule
where date = convert(date,dateadd(dd,1,getdate())))

--Hoist Daily Production

declare @Tonnes int = (select top 1
    case
        when coalesce(lead(value) over(partition by tagname order by datetime),0) - value < '0' then ''
        else coalesce(lead(value) over(partition by tagname order by datetime),0) - value
    end
 from  Linked_Database
 where datetime between @ReportingStart and @ReportingEnd
 and wwResolution = (1440 * 60000)
 and tagname = 'SALV_CV005_WX1_PROD_DATA.Actual_Input'
 )

 --MPS 24HR

declare @MPS_today float = (select sum(value)
from  Linked_Database
 where datetime = @ReportingEnd
 and tagname like 'MPS_FI7940%.Actual_Input')

 declare @MPS_yest float = ( select sum(value) 
from  Linked_Database
 where datetime = @ReportingStart
 and tagname like 'MPS_FI7940%.Actual_Input')

declare @MPS_total float = (@MPS_today-@MPS_yest)

--IPDW 24HR (claypit + IPDW)

declare @IPDW_today float = (select isnull(sum(value),0)
from  Linked_Database
 where datetime = @ReportingEnd
 and tagname like '%FI792%.Actual_Input')

 declare @Clay_today float = (select isnull(sum(value),0) 
from  Linked_Database
 where datetime = @ReportingEnd
 and tagname like '%FI764%_TOTAL.PVAI')

 declare @IPDW_yest float = (select isnull(sum(value),0) 
from  Linked_Database
 where datetime = @ReportingStart
 and tagname like '%FI792%.Actual_Input')

 declare @Clay_yest float = (select isnull(sum(value),0) 
from  Linked_Database
 where datetime = @ReportingStart
 and tagname like '%FI764%_TOTAL.PVAI')

 declare @IPDW_total float = (@IPDW_today+@Clay_today-@IPDW_yest-@Clay_yest)

--Average airflow across both vent fan

declare @VF_Avg float = (select avg(value) 
from  Linked_Database
 where datetime between @ReportingStart and @ReportingEnd
 and tagname = 'vfans_totalairflow.pv_at')

 --BAC wet bulb
declare @BAC_Wet float = (select avg(value) 
from  Linked_Database
 where datetime between @ReportingStart and @ReportingEnd
 and tagname = 'gb_bac_tt787125a._analog_PV')

 declare @BAC_Dry float = (select avg(value) 
from  Linked_Database
 where datetime between @ReportingStart and @ReportingEnd
 and tagname = 'gb_bac_tt787125b._analog_PV')

  --Final Select Statement
 select @HoistSched as Hoist_Sched_today, @HoistSchedTom as Hoist_Sched_Tom, @PM as PM_Tom, @Tonnes as Hoist_Act, @Util as Hoist_Util, @Avail as Hoist_Avail, @MPS_total as MPS_Dewatering_Total, @IPDW_total as IPDW_Dewatering_Total,  @VF_Avg as VFan_AVG, @BAC_Dry as BAC_Dry_AVG, @BAC_Wet as BAC_Wet_AVG

您可以使用以下命令创建 csv 文件xp_cmdshell但需要先启用它:

EXEC sp_configure 'show advanced options', 1;  
GO  
-- To update the currently configured value for advanced options.  
RECONFIGURE;  
GO  
-- To enable the feature.  
EXEC sp_configure 'xp_cmdshell', 1;  
GO  
-- To update the currently configured value for this feature.  
RECONFIGURE;  
GO  

然后构建 bcp 命令并运行它xp_cmdshell

declare @fileName varchar(4000) = 'C:\Temp\MyFile.csv'
declare @bcpCommand varchar(4000)

SET @bcpCommand = 'bcp "SELECT ' + @HoistSched + ' AS Hoist_Sched_today, ' + @HoistSchedTom + ' as Hoist_Sched_Tom" queryout ' + @fileName + '  -c -t , -r \n  -S . -T'

select @bcpCommand 

EXEC master..xp_cmdshell @bcpCommand

然后通过电子邮件发送文件sp_send_dbmail

EXEC msdb.dbo.sp_send_dbmail 
@profile_name='MyEmailProfileName',
@recipients='[email protected]',
@file_attachments=@fileName

如果您不需要保存文件而只需通过电子邮件发送结果,那么您需要根据查询构建电子邮件正文并使用 @body 参数sp_send_dbmail

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用计划作业 SQL Agent Management Studio 导出到 CSV 的相关文章

  • 在 Sql Server 中转换为日期时间 MM/dd/yyyy HH:mm:ss

    如何将给定的日期格式转换为MM dd yyyy HH mm ss 我尝试了下面这个但没有实现 谁能帮我 SELECT CONVERT VARCHAR 20 GETDATE 120 SQL Server 2005及以上版本支持 SELECT
  • 是否有适用于所有数据库的标准sql

    如下所示 不同数据库的语法有所不同 是否存在适用于所有数据库的标准方法 有没有什么工具可以将任意sql转换为任意sql SQL Server 2005 CREATE TABLE Table01 Field01 int primary key
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 如何从 PostgreSQL 中的时间戳列值提取一天中的时间(或小时)?

    我正在尝试从 PostgreSQL 中的 时间戳 列中提取一天中的时间 这是我的做法 但是 太糟糕了 知道如何做得更好吗 SELECT date part hour date demande text hours date part min
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • 选择具有 SQL Server XML 列类型的特定行

    我正在尝试从类似于以下定义的表中选择数据 Column Data Type Id Int DataType Int LoggedData XML 但我只想选择具有特定 DataType 值并且在 LoggedData 列中包含字符串 或评估
  • 用更轻的解决方案替换完整的 ORM(JPA/Hibernate):推荐的加载/保存模式?

    我正在开发一个新的 Java Web 应用程序 并且正在探索保存数据的新方法 对我来说是新方法 我主要有 JPA 和 Hibernate 的经验 但是 除了简单的情况之外 我认为这种完整的 ORM 可能会变得相当复杂 另外 我不太喜欢和他们
  • 使用 ADODB 连接从关闭的工作簿中检索数据。某些数据被跳过?

    我目前正在编写一些代码 可以通过 ADODB 连接访问单独的工作簿 由于速度的原因 我选择了这种方法而不是其他方法 下面是我的代码 Sub GetWorksheetData strSourceFile As String strSQL As
  • 初级SQL部分:避免重复表达式

    我对 SQL 完全陌生 但我们可以说StackExchange 数据浏览器 https data stackexchange com 我只想按信誉列出前 15 位用户 我写了这样的内容 SELECT TOP 15 DisplayName I
  • 内连接不重复,可以吗?

    鉴于这两个表 表 A1 有两行具有相同的值 a A1 a a 表 A2 有两行主键值为 A B 它们与 a 关联 A2 PK col2 A a B a 我想要的是 A1 和 A2 的连接并得到这个结果 a A a B 显然内连接在这里不起作
  • 为表中的每个组选择前 N 行

    我面临一个非常常见的问题 即 为表中的每个组选择前 N 行 考虑一个表id name hair colour score列 我想要一个结果集 对于每种头发颜色 都能得到前 3 名得分手的名字 为了解决这个问题 我得到了我所需要的Rick O
  • 自加入表

    我有一张像这样的桌子 Employee name salary a 10000 b 20000 c 5000 d 40000 我想获取所有工资高于A工资的员工 我不想使用任何嵌套或子查询 在采访中被问及并暗示是使用自连接 我真的不知道如何实
  • 如何将表中不存在但原始SQL中存在的实体字段设置为别名?

    假设我们有一个这样的查询 SELECT CUSTOM EXPRESSION as virtualfield FROM users 用户的实体本身具有 虚拟字段 但映射注释没有 因为表没有该字段 假设它作为原始 SQL 执行 我们如何使用上面
  • 使用间隔阈值对不同的连续时间戳记录进行分组

    我有一系列间歇性间隔的带有时间戳的 GPS 坐标 我正在使用 PostGIS 将它们渲染到地图画布上 为了渲染它们 需要使用 PostGIS 中的 ST MakeLine 聚合函数将点聚合成线 从而在地图上留下 GPS 数据丢失的间隙 数据
  • SQL - != 'NULL' 的解释

    我的SSMS代码如下 Select top 50 From FilteredContact Where statuscode 1 and emailaddress1 NULL and telephone1 NULL and address1
  • SQL 国家字符 (NCHAR) 数据类型的真正用途是什么?

    也CHAR CHARACTER and VARCHAR CHARACTER VARYING SQL 提供了NCHAR NATIONAL CHARACTER and NVARCHAR NATIONAL CHARACTER VARYING 类型
  • Visual Studio 2010 中的数据库设计器

    我需要创建一个全新的 Sql Server 2008 数据库 并希望使用 Visual Studio 2010 Ultimate 中的数据库项目 我已经创建了该项目并在下面添加了一个表格dbo架构 桌子 sql仅以纯文本形式显示 但带有颜色
  • MS ACCESS 计数/求和行数,不重复

    我有下表 我需要计算总行数而不包括任何重复记录 CustomerID test1 test1 test2 test3 test4 test4 如您所见 总行数为 6 但有两个 test1 和两个 test4 我希望查询返回 4 IOW 我想
  • 索引数量越少意味着插入、更新和删除速度更快? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 Oracle 行的多个列上使用透视

    我在 Oracle 表中有以下示例数据 tab1 我正在尝试将行转换为列 我知道如何在某一列上使用 Oracle 数据透视表 但是否可以将其应用于多个列 样本数据 Type weight height A 50 10 A 60 12 B 4

随机推荐

  • CSS3 转换为梯形

    我需要使用 div 元素创建一个 CSS3 梯形 为了让我在做什么一目了然 我在下面创建了一个基本视觉效果 绿色是一个普通的矩形 div 而红色代表我需要将 div 更改为的部分 以实现我需要的梯形形状 假设我们正在编辑 trapezoid
  • 扩展 Drupal 7 搜索

    我想使用一个附加字段来扩展默认的 Drupal 7 节点搜索 我使用以下新字段更改搜索表单 function mymodule form search form alter form form state form id form basi
  • Android AudioRecord 过滤频率范围

    我正在使用android平台 从下面的参考问题我知道使用返回原始数据的AudioRecord类我可以根据我的需要过滤音频范围 但为此我需要算法 有人可以帮我找到吗过滤范围黑白 14 400 bph 和 16 200 bph 的算法 我尝试了
  • Azure 数据流需要几分钟才能触发下一个管道

    Azure 数据工厂在 10 毫秒内将数据传输到 Db 中 但我遇到的问题是它需要等待几分钟才能触发下一个管道 最终需要 40 分钟 所有管道传输数据的时间不到 20 毫秒 但不知何故 它要等待几分钟才能触发下一个 I used debug
  • 使用 meld 作为 diff 工具时查看 git 过滤器输出

    我设置了一些git 过滤器为了在提交某些文件之前对其进行预处理 在我的例子中是 IPython Notebooks 更准确地说 我正在遵循以下说明 https stackoverflow com a 20844506 578770 如果我提
  • 在 pyinstaller 中以窗口模式导出到 EXE 后,Selenium 不起作用

    我正在制作一个需要使用 selenium 的 PyQt4 应用程序 开发时一切正常 但是当我导出到单个文件执行文件 由py安装程序 and 不带控制台 它会产生以下回溯错误 WinError6 The handle is invalid 当
  • JSONModel 返回 nil

    我使用 JSONModel 从 URL 获取 JSON 这是一个非常简单的对象 仅包含 2 个字符串 name 和 url 首先我制作了对象模型 protocol Tutorial end interface Tutorial JSONMo
  • 在 jsFiddle 中有效,但在我的网站中无效

    由于某种原因 我网站上的这个 jQuery 代码可以在 jsFiddle 上运行 但不能在本地运行 代码是一样的 我刚刚复制并粘贴了它 谁能向我解释这是怎么回事 jsFiddle Local 使用Chrome的开发者工具 在控制台中出现错误
  • 导出后未在 Honeycomb 上调用 BOOT_COMPLETED

    我有一个非常奇怪的问题 网站上已有的问题都没有答案或相同的问题 我有一个接收 BOOT COMPLETED 的应用程序 我通过将 android installLocation 设置为internalOnly 确保它可以接收意图 我的 On
  • Unity : this == null 返回 true。怎么会发生这种事呢? [复制]

    这个问题在这里已经有答案了 我一直在统一开发一个项目 我试图用 Invoke string float 调用一个函数 虽然我收到一条错误消息说要检查我的gameobject为空 所以我尝试做 debug log gameObject nul
  • 用于绘制地图的底图/项目的 Pandas 错误

    我运行了下面的 Python 代码 这是一本书上的 绘制地图 可视化海地地震危机数据 的示例 Python 数据分析 第242 246页 该代码应该创建海地的绘图 但我收到如下错误 Traceback most recent call la
  • 如何从 Win32 DLL 或 OCX 中提取 GUID

    我们有一个 NET 应用程序需要检查可能包含 COM 库 DLL 和 OCX 的文件夹 当我们遇到 COM 库时 我们需要完成的一件事是从 COM DLL 或 OCX 中提取 GUID 有没有一种直接的方法可以在 NET 中执行此操作而不使
  • 无法访问存储在我的 App_Data 文件夹中的图像

    我的 ASP NET MVC Web 应用程序中有以下链接 a href App Data uploads 38 png Model Name a 但是当我点击此链接时 出现以下错误 HTTP 错误 404 8 未找到 请求过滤模块被配置为
  • 将数组从 C# COM 对象传递到 JavaScript?

    与此类似如何将 ActiveX 对象中的字符串数组返回到 JScript但在 C 中 我有一个 COM 控件 它将字符串数组传回 javascript 似乎 javascript 无法理解我传回的是什 么 并且 javascript 中的数
  • 拒绝未转义 HTML 字符的正则表达式

    我想限制在特定输入字段中使用未转义的 符号 我无法让正则表达式杀死 的使用 除非后面跟着 amp 或者可能只是限制 的使用 注意空格 我尝试调整答案在这个线程中 但无济于事 谢谢 FWIW 这是我制作的一个正则表达式 以确保文件名字段不包含
  • 是否可以使用 JMX 在一台中央 MBean 服务器中注册或显示来自不同 VM 的 MBean?

    我正在寻找一种解决方案 用于从中央 MBean 服务器中的不同 Java VM 注册 MBean 或整个 MBean 服务器本身 该服务器也应该在单独的 VM 中运行 目标是只有一个中央 MBean 服务器 其中包含整个系统的所有 MBea
  • Angular UI 引导模式

    我正在使用 Angular UI Bootstrap 模式 ui bootstrap dialog 并且我有background true backgroundClick true 但是 当用户单击远离模式时 我不仅想执行关闭功能 还想执行
  • 如何使用.htaccess将图像请求重写为PHP脚本?

    我有一个 PHP 脚本位于http sb1 dev codeanywhere net a70097sb hc onlinestatus image php这需要两个GET变量 ign and style My htaccess文件与以下目录
  • MySQL 和 C:对 `_mysql_init@4'| 的未定义引用

    我正在尝试为 C 编写一个简单的脚本来从 MySQL 数据库获取值 但它抛出此错误 未定义引用 mysql init 4 不知道我是否没有链接到我应该链接的内容 我的C知识有限 我在 Windows 上使用代码块 这是我的代码 includ
  • 使用计划作业 SQL Agent Management Studio 导出到 CSV

    我正在尝试创建一个 SQL 代理作业 该作业每天自动运行以下查询并生成一个 CSV 文件 该文件存储在 C test csv 上 并通过电子邮件发送给人们 我在网上尝试了各种选项 但找不到适合我的查询的选项 它是来自多个数据集的数据 放入单