Powershell SQL 查询未正确导出为 CSV?



我需要从表中的几列中检索数据行。

我需要自动化这个。

我决定使用批处理文件。

我一直在运行的命令是。

osql -S .sqlexpress -E -i "C:Usersuser.nameDesktopeventdatetime24hr.sql" -o "C:Usersuser.nameDesktopqueryOut.csv"

它生成如下所示的输出:

图:

https://aws1.discourse-cdn.com/business6/uploads/sqlteam/original/2X/9/98ed243059c8a3e9ad61a25a441086785932c3c9.png

如您所见,输出看起来很粗。

我需要将其输入到另一个应用程序中,但是,我只能这样做,因为每列和每行数据都有一个单独的单元格。

我不知道该怎么做,任何人都可以帮忙吗?

这些列是:事件日期时间、事件 id、s叙述

首先,osql已被弃用,并且在SQL Server的未来版本中可能会被删除。请考虑使用sqlcmd命令行使用,或本机 Powershell 命令,如Invoke-SqlCmd甚至 dbatools。

您得到的结果可能是由不适当的列分隔符引起的。在 CSV 文件中,逗号,通常用作列伦分隔符。问题往往是。在几个非美国区域设置中,分隔符是另一回事。制表符和分号;是流行的替代方法。

电子表格应用程序使用的分隔符与文件包含的分隔符不同。因此,它不明白内容将被拆分为单独的列。要解决此问题,请使用默认分隔符创建文件,或告诉电子表格使用替代分隔符。

要更改分隔符,请使用另一个答案中描述的语法:

:: cmd
sqlcmd -S ServerName -E -Q"select * from mytable" -s"   " -o results.txt
# Powershell
sqlcmd -S ServerName -E -Q"select * from mytable" -s `"`t`" -o results.txt

电子表格可能具有 Excel 的"文本到列"或"导入文本向导"等功能。使用任一选项导入文档并选择正确的分隔符。要查看它的真实情况,请先在记事本中打开该文件。

最新更新