使用Export-CSV将sqlplus查询结果导出为CSV

时间:2013-04-19 18:48:25

标签: powershell sqlplus

我在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中假脱机。

2 个答案:

答案 0 :(得分:1)

现在无法测试,但尝试将$ export连接到Select-Object:

$export | 
    Select-Object Column1, Column2, etc | 
    Export-Csv   c:\users\*****\test.csv -notypeinformation

答案 1 :(得分:1)

问题在于没有分隔符Powershell不知道您的数据是如何构建的。只要添加逗号,它就会变得非常容易处理。

否则,您将返回尝试解析数据,因为空白列与尾随空格不会有太大差异。

使用SQL +的直接连接将比使用SQL plus更灵活。您的数据将存储在结构化记录中,您可以按照自己的意愿进行操作。

当我执行在powershell脚本中使用SQLPlus时,我使用文件片段以编程方式编写SQL脚本以简化代码,并将其发送到sqlplus,而不是将SQL本身传递给SQLPLUS。这使得添加这样的命令变得容易 colsep, 和其他格式化命令。