1

我在 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。

4

2 回答 2

1

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

否则,您将返回尝试解析数据,因为空白列与尾随空格看起来并没有太大不同。

与使用 SQL plus 相比,使用与数据库的直接连接将为您提供更大的灵活性。您的数据将保存在结构化记录中,您可以随心所欲地进行操作。

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

于 2013-04-22T17:15:16.497 回答
1

现在无法对此进行测试,但请尝试将您的 $export 管道传输到 Select-Object:

$export | 
    Select-Object Column1, Column2, etc | 
    Export-Csv   c:\users\*****\test.csv -notypeinformation
于 2013-04-19T22:19:06.813 回答