Ik zit met ca 3GB aan bestanden in een arbitraire en een xml-bestand van 12MB dat die bestanden beschrijft. Met behulp van Bash heb ik een script geschreven dat de xml doorloopt, een structuur aanmaakt en de bestanden van de huidige, arbitraire structuur en bestandsnaam naar de locatie en bestandsnaam uit de xml kopieert.
Bij het kleine xml-bestand waarmee ik heb getest gaat alles prima, als ik echter het volledige bestand oppak, zie ik het proces lopen, dan afsluiten, dan weer opstarten en afsluiten en heb ik geen resultaat. Hopelijk kunnen jullie mij helpen bij het 'waarom?'.
De xml ziet er als volgt uit (maar dan vele malen groter):
Het bash-script dat ik gebruik ziet er als volgt uit:
Zoals je ziet gebruik ik uiteindelijk maar drie attributen van elk document: context_naam voor het pad, document_naam voor de naam van het document en URI voor de huidige locatie.
Ook kan je zien dat ik de "&" eruit filter voor het aanmaken van de mappen. Als ik die comment, dan werkt het script trouwens ook niet.
Iemand een idee waar dit op stukloopt?
PS: Als ik het aantal regels beperk tot ca 10.000, dan loopt het wel door. Helaas niet echt snel, dus misschien hebben jullie daar ook wel een tip om dit script wat efficienter te maken.
Bij het kleine xml-bestand waarmee ik heb getest gaat alles prima, als ik echter het volledige bestand oppak, zie ik het proces lopen, dan afsluiten, dan weer opstarten en afsluiten en heb ik geen resultaat. Hopelijk kunnen jullie mij helpen bij het 'waarom?'.
De xml ziet er als volgt uit (maar dan vele malen groter):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| <bla> <document> <document_naam>Versie II - RenD-uitgaven private sector.doc</document_naam> <pk_document_id>3489</pk_document_id> <gepubliceerd>1</gepubliceerd> <document_actief>1</document_actief> <URI>/root/nli/00/00/51431C7B-AC23-4C9C-AB00-D69738B8077A.doc</URI> <file_created/> <file_modified/> <created>2008-01-07T15:53:56+01:00</created> <modified>2008-01-07T15:53:56+01:00</modified> <eigenaar_persoon_id>1559218</eigenaar_persoon_id> <eigenaar_persoon_formal_naam>De heer BLA</eigenaar_persoon_formal_naam> <doc_ident_id>3489_5304_58946</doc_ident_id> <tabelnaam>tbl_werkgroep</tabelnaam> <PK_tabel_ID>4617</PK_tabel_ID> <context_naam>Commissie Innovatie & Kennis/14 maart 2008</context_naam> <tree_path>/14 maart 2008</tree_path> <identifier>VergaderingenBijWerkgroep</identifier> <PK_tree_node_locator_id>5304</PK_tree_node_locator_id> <PK_tree_node_id>58946</PK_tree_node_id> </document> </bla> |
Het bash-script dat ik gebruik ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| #!/bin/bash count=1 input=$1 path=/root/nli/target while [ -n "$document_naam" -o $count = 1 ] do document_naam=`cat $input | xpath //document[$count]/document_naam 2>/dev/null | sed s/\<document_naam\>//g| sed s/\<\\\\/document_naam\>//g` context_naam=`cat $input | xpath //document[$count]/context_naam 2>/dev/null | sed s/\<context_naam\>//g| sed s/\<\\\\/context_naam\>//g` URI=`cat $input | xpath //document[$count]/URI 2>/dev/null | sed s/\<URI\>//g| sed s/\<\\\\/URI\>//g` if [ "$document_naam" -a "$context_naam" ]; then # & vervangen door & document_naam=$(echo "$document_naam" | sed 's/&\;/\&/g') context_naam=$(echo "$context_naam" | sed 's/&\;/\&/g') # Acties weergeven en uitvoeren echo $count $path/$context_naam/$document_naam mkdir -p "$path/$context_naam" cp -pf "$URI" "$path/$context_naam/$document_naam" fi count=$((count+1)) done |
Zoals je ziet gebruik ik uiteindelijk maar drie attributen van elk document: context_naam voor het pad, document_naam voor de naam van het document en URI voor de huidige locatie.
Ook kan je zien dat ik de "&" eruit filter voor het aanmaken van de mappen. Als ik die comment, dan werkt het script trouwens ook niet.
Iemand een idee waar dit op stukloopt?
PS: Als ik het aantal regels beperk tot ca 10.000, dan loopt het wel door. Helaas niet echt snel, dus misschien hebben jullie daar ook wel een tip om dit script wat efficienter te maken.
[ Voor 3% gewijzigd door Mr_Big op 11-03-2013 16:47 ]