要导出到CSV的Powershell

要导出到CSV的Powershell,powershell,powershell-5.0,Powershell,Powershell 5.0,我有我的方法(除非我做了一些愚蠢的事情)在昨天导出到csv时非常有效。然而,今天我不断地犯下这样的错误: 使用“1”参数调用“Fill”时出现异常:“ExecuteReader:CommandText属性尚未初始化” $rowCount=$SqlAdapter.Fill($dt) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo:NotSpecified:(:)[],MethodInvocationException FullyQualifiedErr

我有我的方法(除非我做了一些愚蠢的事情)在昨天导出到csv时非常有效。然而,今天我不断地犯下这样的错误:

使用“1”参数调用“Fill”时出现异常:“ExecuteReader:CommandText属性尚未初始化”

  • $rowCount=$SqlAdapter.Fill($dt)
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    • CategoryInfo:NotSpecified:(:)[],MethodInvocationException
    • FullyQualifiedErrorId:InvalidOperationException
这是我的语法:

$server = "serverinstance"
$database = "databaseinstance"
$savefile = "C:\Test\sqlresults.csv"
$SelectQuery = "Select Top 1 * from madeuptable"
$connectionTemplate = "Data Source={0};Integrated Security=SSPI;Initial Catalog={1};"
$connectionString = [string]::Format($connectionTemplate, $server, $database)
$connection=New-Object System.Data.SqlClient.SqlConnection($connectionString)

$cmd=$connection.CreateCommand()
$cmd.CommandText = $SelectQuery 

$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
$dt = New-Object System.Data.DataTable
$rowCount=$SqlAdapter.Fill($dt)

if ($rowCount -gt 0) { $dt| Export-Csv $savefile -encoding UTF8 -NoTypeInformation }
$connection.Close()

尝试使用查询和连接创建SqlDataAdaper(并删除cmd)

例如:

$SqlAdapter = new-object system.data.sqlclient.sqldataadapter ($SelectQuery, $connection)

尝试使用查询和连接创建SqlDataAdaper(并删除cmd)

例如:

$SqlAdapter = new-object system.data.sqlclient.sqldataadapter ($SelectQuery, $connection)

我将检查您的$server和$database变量。我刚刚在我自己的SQL server上运行了您的脚本,它对我来说运行得很好

编辑

以下是我的跑步记录:

$server = "FAR-L2484\HOLDER_SQL"  ## Hostname\InstanceID
$database = "MASTER"
$savefile = "C:\Test\sqlresults.csv"
$SelectQuery = "SELECT * FROM information_schema.tables"
$connectionTemplate = "Data Source={0};Integrated Security=SSPI;Initial Catalog={1};"
$connectionString = [string]::Format($connectionTemplate, $server, $database)
$connection=New-Object System.Data.SqlClient.SqlConnection($connectionString)

$cmd=$connection.CreateCommand()
$cmd.CommandText = $SelectQuery 

$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
$dt = New-Object System.Data.DataTable
$rowCount=$SqlAdapter.Fill($dt)

$dt| Export-Csv $savefile -encoding UTF8 -NoTypeInformation
$connection.Close()
这是我在C:\test\sqlresults.csv中得到的

"TABLE_CATALOG","TABLE_SCHEMA","TABLE_NAME","TABLE_TYPE"
"master","dbo","spt_fallback_db","BASE TABLE"
"master","dbo","spt_fallback_dev","BASE TABLE"
"master","dbo","spt_fallback_usg","BASE TABLE"
"master","dbo","spt_values","VIEW"
"master","dbo","spt_monitor","BASE TABLE"
"master","dbo","MSreplication_options","BASE TABLE"

我将检查您的$server和$database变量。我刚刚在我自己的SQL server上运行了您的脚本,它对我来说运行得很好

编辑

以下是我的跑步记录:

$server = "FAR-L2484\HOLDER_SQL"  ## Hostname\InstanceID
$database = "MASTER"
$savefile = "C:\Test\sqlresults.csv"
$SelectQuery = "SELECT * FROM information_schema.tables"
$connectionTemplate = "Data Source={0};Integrated Security=SSPI;Initial Catalog={1};"
$connectionString = [string]::Format($connectionTemplate, $server, $database)
$connection=New-Object System.Data.SqlClient.SqlConnection($connectionString)

$cmd=$connection.CreateCommand()
$cmd.CommandText = $SelectQuery 

$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
$dt = New-Object System.Data.DataTable
$rowCount=$SqlAdapter.Fill($dt)

$dt| Export-Csv $savefile -encoding UTF8 -NoTypeInformation
$connection.Close()
这是我在C:\test\sqlresults.csv中得到的

"TABLE_CATALOG","TABLE_SCHEMA","TABLE_NAME","TABLE_TYPE"
"master","dbo","spt_fallback_db","BASE TABLE"
"master","dbo","spt_fallback_dev","BASE TABLE"
"master","dbo","spt_fallback_usg","BASE TABLE"
"master","dbo","spt_values","VIEW"
"master","dbo","spt_monitor","BASE TABLE"
"master","dbo","MSreplication_options","BASE TABLE"

$SelectQuery
脚本中似乎缺少。@Kenney-复制/粘贴错误已更新。如果运行发布的代码段,该怎么办?@Kenney-否发布的代码段会产生错误。我可以运行您的代码,没有问题。您的复制/粘贴错误将解释您收到的错误消息。
$SelectQuery
脚本中似乎缺少。@Kenney-复制/粘贴错误已更新。如果您运行发布的代码段,该操作是否有效?@Kenney-否发布的代码段会产生错误。我可以运行您的代码,没有问题。您的复制/粘贴错误可以解释您收到的错误消息。我注释掉了以$cmd开头并添加到yoursw中的两行,得到了相同的错误。我注释掉了以$cmd开头并添加到yoursw中的两行,得到了相同的错误。