如何按日期将查询结果导出为多个csv文件?(Microsoft SQL Server)
所以我有一个数据库,里面有一堆日志文件。他们每个人都有几个月的约会。我运行的查询每个日期返回几百个结果 将所有内容保存到一个csv文件太大(约60000行),无法像我希望的那样在excel中使用。 所以我想每天创建一个csv文件,所以0401.csv 0402.csv 0403.csv等等 下面是我用来计算每个日期的条目数量的代码如何按日期将查询结果导出为多个csv文件?(Microsoft SQL Server),sql,sql-server,csv,Sql,Sql Server,Csv,所以我有一个数据库,里面有一堆日志文件。他们每个人都有几个月的约会。我运行的查询每个日期返回几百个结果 将所有内容保存到一个csv文件太大(约60000行),无法像我希望的那样在excel中使用。 所以我想每天创建一个csv文件,所以0401.csv 0402.csv 0403.csv等等 下面是我用来计算每个日期的条目数量的代码 SELECT CAST(Created_at AS DATE), COUNT(*) AS Count FROM tbTickets WHERE
SELECT CAST(Created_at AS DATE), COUNT(*) AS Count FROM tbTickets
WHERE Created_at BETWEEN '2020/04/01 00:00:00' AND '2020/08/01 23:59:59'
AND (lots of other conditions here)
GROUP BY CAST(Created_at AS DATE)
ORDER BY 1;
上面的返回值类似于
2020-04-01 150
2020-04-02 165
...
所以我想做的是将这150个条目(不是数字150,而是150行及其所有列)保存到各自的文件中
上面的代码使用的是GROUPBY,而我在SQL方面还不够高级,不知道是否可以使用它来导出文件。一般来说,在编程中,我应该能够循环所有行并计算日期数量,按日期排序,将开始日期设置为最早,循环所有行并将行保存到各自的文件中。有人知道如何在SQL中实现这一点吗?谢谢 60000行CSV不是很大,为什么“太大”?此外,您应该真正停止在
orderby
子句中使用序号位置。停止使用本地化的日期文字,或者在字符串字段中存储日期,而不是使用正确的类型。造成延迟的原因很可能是服务器必须扫描所有这些字符串值并将它们解析为日期,然后才能在不利用任何索引的情况下对它们进行筛选和排序。如果要存储日期,请使用date
;如果要存储数据和数据,请使用datetime2
或datetimeoffset
time@Larnu它太大了,因为当我试图打开一个大约4000行的类似文件时,在Excel中打开需要一分钟。这意味着这将需要10-15分钟,而且很难导航。它有30列,充满了日文字符,包括一个包含大量信息(错误日志等)的巨大文本字段。@PanagiotisKanavos Hi,我意识到这一点,并将在我确定我需要执行的过程将正常工作后处理这类事情。目前数据库本身没有性能问题,我只是想知道如何将数据导出到多个文件中。要做到这一点,您需要实现一个ETL过程。例如,每天使用SSI循环访问数据集,或使用powershell和bcp
。有很多选择,