在powershell中导入csv内存不足异常

在powershell中导入csv内存不足异常,powershell,Powershell,我正在尝试导入存储在位置中的csv文件。所有文件的大小都不同,包含1KB到15KB或更多。所以,当我尝试导入带有以下脚本的文件时,o出现内存不足异常 $DataImport=Import-Csv -Path (Get-ChildItem $CsvFilePath) $DataTable=Out-DataTable -InputObject $DataImport Write-DataTable -ServerInstance $server -Database $Database -Tabl

我正在尝试导入存储在位置中的csv文件。所有文件的大小都不同,包含1KB到15KB或更多。所以,当我尝试导入带有以下脚本的文件时,o出现内存不足异常

$DataImport=Import-Csv -Path (Get-ChildItem $CsvFilePath)

$DataTable=Out-DataTable -InputObject $DataImport

Write-DataTable -ServerInstance $server -Database $Database -TableName $Table -Username 

$Username -Password $Password -Data $DataTable
csv文件应避免OOM异常的最大行数是多少?有没有其他更好的方法来处理这种情况。我看到post使用fgetcsv命令逐行读取。但这是很长一段时间对吗

请给我你的建议。 提前谢谢
jerin

查看
Out DataTable
语法:它很可能是管道友好的。 因此,您可以轻松简化流程,而不是将整个CSV“吸入”到变量中:

Import-Csv -Path (Get-ChildItem $CsvFilePath) | Out-DataTable

限制:我没有意识到这一点,但这正是管道通常可以帮助您的:它不会在内存中存储全部内容,因此即使您没有足够的内存,它也很可能工作得很好。

查看
Out DataTable
语法:它很可能对管道友好。 因此,您可以轻松简化流程,而不是将整个CSV“吸入”到变量中:

Import-Csv -Path (Get-ChildItem $CsvFilePath) | Out-DataTable

限制:我不知道这一点,但这正是管道通常可以帮助您的:它不会在内存中存储全部内容,因此即使您没有足够的内存,它也很可能工作得很好。

是的,Bartek,它的工作很好。.非常感谢您的帮助。此外,我强烈建议您在Write DataTable命令中使用较小的批处理大小,默认值为50000,如果服务器在低内存环境中执行其他操作,这将是一个巨大的负担。我们把价格降到了500英镑,这对我们来说非常有效。没有真正的速度降低,但在我们的案例中,对于我们正在进行的操作,内存从660mb大幅减少到280mb,这很重要。干杯。是的,Bartek,它的工作很好。非常感谢您的帮助。此外,我强烈建议对您的Write DataTable命令使用较小的批处理大小,因为我们的默认批处理大小是50000,如果服务器在内存较低的环境中执行其他操作,这对服务器来说是一个巨大的负担。我们把价格降到了500英镑,这对我们来说非常有效。没有真正的速度降低,但在我们的案例中,对于我们正在进行的操作,内存从660mb大幅减少到280mb,这很重要。干杯