Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell和Oracle,将SQL数据导出到csv_Oracle_Csv_Powershell_Powershell 2.0 - Fatal编程技术网

Powershell和Oracle,将SQL数据导出到csv

Powershell和Oracle,将SQL数据导出到csv,oracle,csv,powershell,powershell-2.0,Oracle,Csv,Powershell,Powershell 2.0,我有一个包含电子邮件地址的Oracle SQL表。我需要提取这些数据并将其插入数组,然后导出到csv文件。我不太确定接下来该怎么办。到目前为止,我的代码是: $odpAssemblyName = "Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" [System.Reflection.Assembly]::Load($odpAssemblyName) $con = Ne

我有一个包含电子邮件地址的Oracle SQL表。我需要提取这些数据并将其插入数组,然后导出到csv文件。我不太确定接下来该怎么办。到目前为止,我的代码是:

$odpAssemblyName = "Oracle.DataAccess, Version=2.112.3.0,
Culture=neutral, PublicKeyToken=89b483f429c47342"
[System.Reflection.Assembly]::Load($odpAssemblyName)

$con = New-Object Oracle.DataAccess.Client.OracleConnection("User Id=HR;Password=oracle;Data Source=XE")
$cmd=$con.CreateCommand()
$cmd.CommandText= @"

SELECT DISTINCT email FROM 
hr.emails WHERE acct_enabled = 'Y' 
AND UPPER(email) NOT LIKE 'AIS%'ORDER BY email
"@

$con.Open()

$rdr=$cmd.ExecuteReader()
$columnNames=$rdr.GetSchemaTable() | Select-Object -ExpandProperty ColumnName

$resultSet=@()

while ($rdr.Read()) {

    $intData=$rdr.GetOracleString(0)

    "{0,0}" -f $intData.Value

}

$con.Close()
有谁能帮我完成While循环(我对编程基本上是新手),帮我将结果集添加到数组中,并将结果集导出到一个漂亮的小csv文件中

提前感谢您的帮助/指点


James

尝试类似的方法,尽管我无法准确地测试它,因为我这边没有可用的oracle数据库

$odpAssemblyName = "Oracle.DataAccess, Version=2.112.3.0,
Culture=neutral, PublicKeyToken=89b483f429c47342"
[System.Reflection.Assembly]::Load($odpAssemblyName)

$con = New-Object Oracle.DataAccess.Client.OracleConnection("User Id=HR;Password=oracle;Data Source=XE")
$cmd=$con.CreateCommand()
$cmd.CommandText= @"

SELECT DISTINCT email FROM 
hr.emails WHERE acct_enabled = 'Y' 
AND UPPER(email) NOT LIKE 'AIS%'ORDER BY email
"@

$con.Open()

 $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
 $SqlAdapter.SelectCommand = $cmd
 $DataSet = New-Object System.Data.DataSet
 $SqlAdapter.Fill($DataSet)

$emaillist = $DataSet.Tables[0].Email



$con.Close()

$emaillist | Export-csv "C:\Somefolder\OracleEmails.csv" -NoTypeInformation

尝试类似的方法,尽管我无法准确地测试它,因为我这边没有可用的oracle DB

$odpAssemblyName = "Oracle.DataAccess, Version=2.112.3.0,
Culture=neutral, PublicKeyToken=89b483f429c47342"
[System.Reflection.Assembly]::Load($odpAssemblyName)

$con = New-Object Oracle.DataAccess.Client.OracleConnection("User Id=HR;Password=oracle;Data Source=XE")
$cmd=$con.CreateCommand()
$cmd.CommandText= @"

SELECT DISTINCT email FROM 
hr.emails WHERE acct_enabled = 'Y' 
AND UPPER(email) NOT LIKE 'AIS%'ORDER BY email
"@

$con.Open()

 $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
 $SqlAdapter.SelectCommand = $cmd
 $DataSet = New-Object System.Data.DataSet
 $SqlAdapter.Fill($DataSet)

$emaillist = $DataSet.Tables[0].Email



$con.Close()

$emaillist | Export-csv "C:\Somefolder\OracleEmails.csv" -NoTypeInformation

我声明了一个空数组$resultSet=@(),为我认为需要发生的事情做准备!愚蠢的问题-你只选择了
电子邮件
,对吗?这个CSV文件只是一个电子邮件列表,每封电子邮件都有自己的行,没有逗号,对吗?只是好奇你为什么提到CSV。。。这将看起来像一个文本文件嗨,帕特里克,不,这不是一个愚蠢的问题,这是一个很好的观点:)数组是我真正想用它做的。CSV文件将是一个额外的奖励。有两种方法可以做到这一点,我可以在SQL语句中添加逗号,也可以使用PowerShell添加逗号,我想知道如何使用PowerShell。如果失败,一个简单的非分隔txt文件也可以。我的目标是使用,然后在Exchange服务器上创建一个动态通讯组,并让PowerShell填充它,但一步一个脚印…我声明了一个空白数组$resultSet=@(),为我认为需要发生的事情做准备!愚蠢的问题-你只选择了
电子邮件
,对吗?这个CSV文件只是一个电子邮件列表,每封电子邮件都有自己的行,没有逗号,对吗?只是好奇你为什么提到CSV。。。这将看起来像一个文本文件嗨,帕特里克,不,这不是一个愚蠢的问题,这是一个很好的观点:)数组是我真正想用它做的。CSV文件将是一个额外的奖励。有两种方法可以做到这一点,我可以在SQL语句中添加逗号,也可以使用PowerShell添加逗号,我想知道如何使用PowerShell。如果失败,一个简单的非分隔txt文件也可以。我的目标是使用,然后在Exchange服务器上创建一个动态通讯组,并让PowerShell填充它,但一步一个脚印。。。