将sql查询结果自动打印到文件

时间:2016-12-12 19:00:41

标签: sql powershell csv

大家好我正在尝试按计划自动将查询结果写入制表符分隔的csv文件。目前我正在使用powershell来执行此操作

$results = Invoke-SQLCmd -ServerInstance $Server -Database $Database -query "select distinct * from WHIProducts"
$results | ConvertTo-csv -NoTypeInformation -Delimiter "`t" | Out-File "$inventorypath\inventory_$date\$filename" -fo -en ascii

这个问题是结果太大我得到了system.outofmemoryexception错误。我试过增加maxmemorypershell但我仍然得到同样的错误。我需要自动进入SSMS并手动完成它是不够的。有什么想法吗?

我正在尝试打印~17万行。最终会有更多,可能高达约300k。这是powershell错误。

  

ConvertTo-csv:'System.OutOfMemoryException'类型的异常是   抛出。在   C:\ Users \用户pmaho \ Dropbox的\ MASSFILEStest \脚本\ daily_inventory的.ps1:59   char:12 + $结果| ConvertTo-csv -NoTypeInformation -Delimiter“`t”   | Out-Fil ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~ +   CategoryInfo:NotSpecified:(:) [ConvertTo-Csv],OutOfMemoryException   + FullyQualifiedErrorId:System.OutOfMemoryException,Microsoft.PowerShell.Commands.Co nvertToCsvCommand    -

我正在使用SQL Server Express版

1 个答案:

答案 0 :(得分:3)

尝试将Invoke-SqlCmd的输出传递给Export-CSV cmdlet。这是脚本。

                ->add('nationveranstaltungsort', ChoiceType::class, array(
                    'choices' => array(
                        'D' => 'Deutschland',
                        'AFG' => 'Afghanistan',
//many other countries following                   
                    ),
                    'data' => 'D',
                    'label' => 'Nation Tagungsstätte'))