我正在处理一个处理非常大的数据集的PowerShell脚本。我发现它运行得很好,直到可用内存消耗完毕。由于数据集的大小以及脚本的作用,它有两个变得非常大的数组。原始数组大概是半场演出,最终的对象很容易就是6或7演出。我的想法是,如果我能够按行完成释放行并以增量方式运行脚本,它应该会更好。
我能够使用我发现和调整的函数拆分导入的XML,但是我无法更改数组中实际包含的数据。
这是我用来将数组分成批次的脚本:https://gallery.technet.microsoft.com/scriptcenter/Split-an-array-into-parts-4357dcc1
这是用于导入和拆分结果的代码。
# Import object which should have been prepared beforehand by the query
# script. (QueryForCombos.ps1)
$SaveObj = "\\server\share$\me\Global\Scripts\Resultant Sets\LatestQuery.xml"
$result_table_import = Import-Clixml $SaveObj
if ($result_tables.count > 100000) {
$result_tables = Split-Array -inArray $result_table_import -size 30000;
} else {
$result_tables = Split-Array -inArray $result_table_import -parts 6
}
然后当然有处理脚本实际使用数据并根据需要进行转换。
答案 0 :(得分:1)
对于大型XML文件,我不认为您希望将其全部读入内存,如XmlDocument或Import-Clxml所需。您应该将XmlTextReader视为一次处理XML文件的一种方法。