Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

SQL und XML Knoten ändern

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von chrisen, 29 August 2016.

  1. chrisen

    chrisen Neuer Benutzer

    Hallo Zusammen,
    ich habe eine Frage bezüglich einer Modifizierung einer SQL Abfrage bzw. einer XML Datei.
    Und zwar:
    Ich habe folgende Abfrage (verkürzt):

    <SQL>

    select
    OITM.ItemCode as 'ordernumber',
    OITM.ItemCode as 'mainnumber',
    OITB.ItmsGrpNam,
    OITM.ItemName as 'name',
    OITM.CodeBars as 'EAN',

    OMRC.FirmName as 'suppliername',
    OITM.SalPackMsr as 'PackUnit',


    Case when U_WMH_Onlineshop = 3 Then '0' else '1' end as 'Inaktiv',

    ITM1.Price
    </SQL>


    und bekomme folgende Ausgabe:

    <?xml version="1.0" standalone="yes"?>
    <DocumentElement>
    <article>
    <ordernumber>100002</ordernumber>
    <mainnumber>100002</mainnumber>
    <ItmsGrpNam>Lager</ItmsGrpNam>
    <name>Artikelname</name>
    <suppliername>Firma</suppliername>
    <Inaktiv>N</Inaktiv>
    <Price>0.000000</Price>

    </article>
    </DocumentElement>


    Nun möchte ich diese XML in ein anderes Programm importieren. Dieses Programm fordert leider eine spezielle Form der XML Datei:


    <articles>
    <article>
    <prices>
    <price>
    <price>2.49</price>
    </price>
    </prices>
    <ordernumber>100002</ordernumber>
    <mainnumber>100002</mainnumber>
    <name>Artikelname</name>
    .
    .
    .
    </article>
    </articles>


    Es geht um die Struktur <Prices> <Price> <Price>.
    Wie bekomme ich diese in SQL hin? Bzw. kann ich diese irgendwie automatisiert noch ändern lassen wenn ich die fertige XML Datei habe?

    Freue mich über eure Antworten!

    Grüße,
    chrisen

    PS: Tut mir leid ich bin noch Anfänger in dem Bereich.
     
  2. ukulele

    ukulele Datenbank-Guru

    Dein SQL Code erzeugt zunächst mal eine Tabelle, die Ausgabe als XML scheint bei dir nicht durch die Datenbank zu erfolgen. Oder da fehlt der Code der das ganze wirklich als XML auswirft, gehen tut das mit einigen DBs.

    Welche DB kommt zum Einsatz?
     
  3. chrisen

    chrisen Neuer Benutzer

    Hallo ukulele,
    erst mal vielen Dank für die schnelle Antwort!!

    Ich bin mir ehrlich gesagt nicht sicher, welche DB zum Einsatz kommt. Es könnte sein das es MySQL ist.

    Das hier währe ein weiterer Teil, von der Abfrage:


    <?xml version="1.0"?>
    <CONFIG>

    <!--Beschreibung:
    Tabelle <PARM> beschreibt die Basisparameter f¸r eine Ausgabedatei, es kˆnnen beliebig viele Eintr‰ge vorhanden sein, die Eintr‰ge werden in Eingangsreihenfolge bearbeitet
    <PATH> Netzwerkpfad f¸r die Ausgabe (bitte beachten, der Pfad muss erreichbar sein: also besser mit Namensauflˆsungen arbeiten!)
    <GROUP> Gruppenname bei AutoJob-Aufruf - Hier kˆnnen Teilbereiche der Konfiguration angesprochen werden - Default *NONE
    <ACTIVE> Soll die Ausgabedatei erstellt werden? - Default *YES
    <FILENRKOBJ> Nummernkreisobjekt, falls <FILE> die Spezifikation {NR} enth‰lt (Lfd-Nr.)
    <FILE> Dateiname, kann nachfolgende Platzhalter beinhalten, die zur Laufzeit ersetzt werden
    {DATE} - Datum im Format JJJJMMTT
    {TIME} - Zeit im Format HHMMSS
    {NR} - laufende Nummer (n‰chste mˆgliche Nummer, ermittelt anhand der bereits vorhandenen Dateien)
    <SQL> SQL String zur Datenabeschaffung und Aufbereitung
    <FMT> bestimmt das Ausgabeformat *CSV , *XML oder *TXT
    <OVERWRITE> *NO wenn die Ausgabedatei bereits vorhanden ist wird die Verarbeitung beendet
    <CSVHEADER> *YES|*NO Ausgabe CSV mit Spaltennamen in erster Zeile
    <SEPARATOR> Trennzeichen f¸r CSV,TXT Spalten
    <ENDWITHSEPARATOR> *YES|*NO Soll die CSV,TXT-Line mit Separator enden
    <CSVUEB> Zus. Zeile noch ¸ber der CSV-Spalten¸berschriftenausgabe (*DATE = aktuelles Datum, *TIME = aktuelle Uhrzeit)
    <XMLROOT> Zeilename in XML Datei
    <TXTHEADER> *YES|*NO Ausgabe TXT mit Spaltennamen in erster Zeile
    <TXTUEB> Zus. Zeile noch ¸ber der TXT-Spalten¸berschriftenausgabe (*DATE = aktuelles Datum, *TIME = aktuelle Uhrzeit)

    -->


    <!-- ************************************** -->
    <!-- ** Artikel Voll (alle selektierten) ** -->
    <!-- ************************************** -->

    <PARM>
    <PATH>\\Transfer\WEBOUT</PATH>
    <GROUP>ARTIKEL</GROUP>
    <ACTIVE>*YES</ACTIVE>
    <FILENRKOBJ></FILENRKOBJ>
    <FILE>product.xml</FILE>




    <SQL>
    select
    OITM.ItemCode as 'ordernumber',
    OITM.ItemCode as 'mainnumber',
    OITB.ItmsGrpNam,
    OITM.ItemName as 'name',
    OITM.CodeBars as 'EAN',

    OMRC.FirmName as 'suppliername',
    OITM.SalPackMsr as 'PackUnit',


    Case when U_WMH_Onlineshop = 3 Then '0' else '1' end as 'Inaktiv',

    ITM1.Price

    </SQL>
    <FMT>*XML</FMT>
    <OVERWRITE>*YES</OVERWRITE>
    <XMLROOT>article</XMLROOT>
    </PARM>


    <!-- Update OITM set U_WMH_Onlineshop = 2 where U_WMH_Onlineshop = 3 ************************************** -->





    </CONFIG>



    Vielleicht hilft das weiter?

     
  4. ukulele

    ukulele Datenbank-Guru

    Bei MySQL kenne ich mich nicht so aus, da kann ich wirklich nur an die Doku verweisen. Es scheint das MySQL eine recht simple Befehlszeilenoption hat um einen normalen Select als XML auszugeben. Das erstellt dann natürlich eine simple Struktur die man nicht groß beeinflussen kann. Beispiel:
    MySQL Daten nach XML exportieren › NETWAYS Blog
    Um seine eigene Struktur zu bekommen scheint man sich in MySQL was basteln zu müssen:

    Dazu fehlt mir aber tatsächlich die MySQL Erfahrung.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden