Архив метки: XML

Python — как читать большие XML файлы при ограничении оперативной памяти

Рассмотрим на конкретном примере, как обработать большой каталог книг в формате XML размером 3 Гб.

Задача: скачать каталог по ссылке https://www.litres.ru/static/ds/detailed_data.xml.gz и узнать количество книг в каталоге.

Пример структуры полного каталога книг Литрес в формате XML
Пример структуры полного каталога книг Литрес в формате XML

Читать

Парсинг XML c помощью powershell

Допустим поступила такая задача, есть много файлов XML
В каждом файле есть нужный атрибут
Необходимо подготовить запрос для выборки из базы
$folderPath= «C:SharedBR_Playlist1»
$HouseIds= @()
foreach ($item in dir $folderPath)
{
$xmlFilePath = $folderPath + $item.Name
[xml] $xmlContent = [xml] (Get-Content -Path $xmlFilePath)
#Write-Host $item.Name
foreach( $event in $xmlContent.playlist.program.event )
{
    #Write-Host $event.housenumber
    $HouseIds+=$event.housenumber
}
}
#{$_} 
$HouseIds | sort-object | Get-Unique | Select-Object   @{Name=»Comnd»;Expression={«Select '»+$_+»' as evnt UNION ALL»  }}

PS
В качестве бонуса, небольшой скрипт по проверке даты изменения файла и отправке сообщений на почту.

$fullPath = «\serverc$importExcel.xls»
$lastWrite = (get-item $fullPath).LastWriteTime
$timespan = new-timespan -days 2 

if (((get-date) — $lastWrite) -gt $timespan) {
    send-mailmessage -to «user1@domain.ru» -from «user2@domain.ru» -subject «Employee List Update fail» -Body «Please check » +$fullPath  -SmtpServer «smtp.domain.ru»

Добавляем в планировщик задачу и при необходимости добавляем логирование в параметрах
powershell.exe C:WindowsTasksImportBVUsers.ps1 >> C:WindowsTasksBVImportLog.txt

Автор: Roman D
Дата публикации: 2017-02-01T06:15:00.001-08:00