2015-07-14 4 views
0

Я работаю над сценарием PowerShell, который имеет дело с очень большим набором данных. Я обнаружил, что он работает очень хорошо, пока не будет использована память. Из-за того, насколько велик набор данных и что делает скрипт, он имеет два массива, которые становятся очень большими. Исходный массив - это примерно половина концерта, а конечный объект - это шесть или семь концертов en-memory. Моя идея заключается в том, что она должна работать лучше, если я могу освободить строки, как это сделано, и запустить скрипт с шагом.Импорт XML-объектов в пакеты

Я могу разбить импортированный 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

Если вы можете разделить XML на куски, которые могут обрабатываться индивидуально, вы также сможете обрабатывать XML-данные с помощью конвейера. Пожалуйста, сделайте шаг назад и опишите фактическую проблему, которую вы пытаетесь решить (т. Е. Какая структура имеет ваши данные XML и что вы хотите сделать с ней в конце) вместо того, что вы воспринимаете как решение. Кроме того, фрагмент кода, который вы опубликовали, не может работать так, как вы ожидаете. '$ result_tables' еще не определен, когда вы пытаетесь проверить его свойство' Count', а '>' не является оператором сравнения в PowerShell. –

+0

Должно было положить ... между таблицей результатов и result_table_import. Процессы импортируют XML-файл данных, который был экспортирован из предыдущего скрипта. Первый скрипт извлекает данные с SQL-сервера, а сам сценарий обрабатывает строки и разбивает их на основе возможных комбо, найденных из одного из столбцов. К сожалению, я должен быть довольно неоднозначным, так как это защита данных от компаний ... (Даже если нет фактических данных, они довольно жесткие) – Ethan

ответ

1

Для больших файлов XML я не думаю, что вы хотите прочитать все это в памяти, как требуется с помощью XmlDocument или Import-Clxml. Вы должны посмотреть на XmlTextReader как один из способов обработки XML-файла понемногу.

Смежные вопросы