使用 Export-CSV 将 sqlplus 查询结果导出到 CSV
Posted
技术标签:
【中文标题】使用 Export-CSV 将 sqlplus 查询结果导出到 CSV【英文标题】:Export sqlplus query result to CSV with Export-CSV 【发布时间】:2013-04-19 18:48:25 【问题描述】:我正在 Powershell 2.0 中的 SQLPLUS 中运行一些查询
我想使用 Export-CSV 将表格的内容输出到 csv。 它看起来像这样。
$query = "set hea off`n"
$date1 = "ADD_MONTHS(TRUNC(SYSDATE, 'MM'),-3))"
$query += "DROP TABLE CHRIS_TEMP;CREATE TABLE CHRIS_TEMP AS SELECT FIELDS FROM TABLES;
exit;"
$sqlexec = ($query | sqlplus -s login/pass@db)
$sqlexec
$export= ("set wrap off
set linesize 30000
select * from CHRIS_TEMP;" | sqlplus -s login/pass@db )
$export | Export-Csv c:\users\*****\test.csv -notypeinformation
但输出都是一个单一的字段。 任何人都可以帮助解决这个问题吗?我不希望在 sqlplus 中输出 CSV。
【问题讨论】:
$export
在屏幕上打印时是什么样的?
【参考方案1】:
问题在于没有分隔符 Powershell 不知道您的数据的结构。只要加了逗号,就变得很容易处理了。
否则,您将返回尝试解析数据,因为空白列与尾随空格看起来不会有太大不同。
与使用 SQL plus 相比,使用直接连接到数据库会给您带来更大的灵活性。您的数据将保存在结构化记录中,您可以随意使用。
当我确实在 powershell 脚本中使用 SQLPlus 时,我使用文件片段以编程方式编写 SQL 脚本以简化代码,并将其发送到 sqlplus,而不是将 SQL 本身通过管道传输到 SQLPLUS。这使得添加这样的命令变得容易 收起, 和其他格式化命令。
【讨论】:
我切换到直接连接并填满了一个工作表,使用上面的 nimizen 方法导出。你们俩都帮了我很大的忙。【参考方案2】:目前无法对此进行测试,但请尝试通过管道将您的 $export 传递给 Select-Object:
$export |
Select-Object Column1, Column2, etc |
Export-Csv c:\users\*****\test.csv -notypeinformation
【讨论】:
感谢您回复我,这将输出一个仅包含标题的 CSV。但是,我将它与 marceljg 的答案结合起来,通过删除 SQLPLUS 部分并直接连接来获得我需要的东西 感谢您对解决方案的反馈,很高兴这对您有所帮助!以上是关于使用 Export-CSV 将 sqlplus 查询结果导出到 CSV的主要内容,如果未能解决你的问题,请参考以下文章
PowerShell Export-Csv 导出与导入CSV文件
PowerShell Import-CSV“过滤掉空行”Export-CSV