Zum Inhalt wechseln


Foto

XML mit Logparser verwerten

Windows 7 MS SQL

  • Bitte melde dich an um zu Antworten
Keine Antworten in diesem Thema

#1 novabyte

novabyte

    Newbie

  • 1 Beiträge

 

Geschrieben 05. Januar 2016 - 07:13

Hallo zusammen,

 

ich kämpfe seid einiger Zeit mit der Auswertung von XML-Daten, und bekomme keine passende Lösung. Hoffentlich kann mir hier einer helfen!

Es geht um die Auswertung von virtuellen und physikalischen Hosts.

 

Meine XML-Datei sieht folgendermaßen aus:

 

<?xml version='1.0' encoding="UTF-8" standalone='yes'?>
<message>
<table name="server_table" >
<row><col col_name="Hostname" col_id="u.hostname" >p_host1</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" >v_host1</col>
<col col_name="status" col_id="u.status" >running</col>
<col col_name="Server: data2" col_id="u.data2" >data2</col>
</row>
<row><col col_name="Hostname" col_id="u.hostname" >p_host1</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" >v_host2</col>
<col col_name="status" col_id="u.status" >running</col>
<col col_name="Server: data2" col_id="u.data2" >data2</col>
</row>
<row><col col_name="Hostname" col_id="u.hostname" >p_host2</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" >v_host1</col>
<col col_name="status" col_id="u.status" >configured</col>
<col col_name="Server: data2" col_id="u.data2" >data2</col>
</row>
<row><col col_name="Hostname" col_id="u.hostname" p_host2</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" >v_host2</col>
<col col_name="status" col_id="u.status" >configured</col>
<col col_name="Server: data2" col_id="u.data2" >data2</col>
</row>
<row><col col_name="Hostname" col_id="u.hostname" >p_host2</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" >v_host3</col>
<col col_name="status" col_id="u.status" >running</col>
<col col_name="Server: data2" col_id="u.data2" >data2</col>
</row>
<row><col col_name="Hostname" col_id="u.hostname" >p_host3</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" >v_host4</col>
<col col_name="status" col_id="u.status" ></col>
<col col_name="Server: data2" col_id="u.data2" >data2</col>
</row>
<row><col col_name="Hostname" col_id="u.hostname" >p_host4</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" ></col>
<col col_name="status" col_id="u.status" ></col>
<col col_name="Server: data2" col_id="u.data2" ></col>
</row>
</table>
</message>

 

 

Als Endergebnis wünsch ich mir zwei Ausgaben:

1. Ausgabe in einer passenden Tabelle, wie:

  

u.hostname   u.name      u.status

------------ ------------ ------------

p_host1      v_host1     running

p_host1      v_host2     running

p_host2      v_host1     configured

p_host2      v_host2     configured

p_host2      v_host3     running

p_host3      v_host4

p_host4    

 

2. Die Ausgabe von "u.hostname" (physikalischer Host) auf der die gegebene "u.name" (virtueller Host) im Status ("u.status")  'running" ist.

Dies erledige ich dann durch dynamische Anpassung der SQL-Query - per Variable...

z.B. :

Eingabe: v_host1   Ausgabe: p_host1

Eingabe: v_host3   Ausgabe: p_host2

Eingabe: v_host4   Ausgabe: ' ' (leer)

 

Bisher habe ich eine Query, die der oben gezeigten Tabelle ansatzweise gleicht, aber ich komme nicht weiter...

 

- Meine Logparser-Kommandozeile lautet: logparser -i:XML -fNames:XPath -fMode:Auto -rootXPath:/message/table/row file:query.sql -o:datagrid

- Inhalt von query.sql:

select
  max(case 'u.hostname' when /row/col/@col_id THEN /row/col ELSE '' END) AS u.hostname,
  max(case 'u.name' when /row/col/@col_id THEN /row/col ELSE '' END) AS u.name,
  max(case 'u.status' when /row/col/@col_id THEN /row/col ELSE '' END) AS u.status
from D:\test\data.xml
group by /row/col

 

 

Ich hoffe auf eure Hilfe! :)

Angehängte Dateien

  • Angehängte Datei  files.zip   617bytes   0 Mal heruntergeladen

Bearbeitet von novabyte, 05. Januar 2016 - 07:16.