[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    832

    scan replace mit sql

    Hallo an *ALL,

    hier eine kleine Aufgabe für die freien Tage :-)

    Ich bekomme eine csv Datei. Diese csv Datei hat als Feldtrenner den ;
    Soweit alles ok.

    Jetzt stellt sich folgendes heraus:
    In einem Adressfeld ist das ; Zeichen enthalten.

    Beispiel:
    PHP-Code:
    ;DE;"PHOENIX VERF & GLAS";G CANTE;HUIZEN,NH
    Die Felder sind ohne Feldbegrenzer in der csv Datei.

    Nur die Felder wo auch das ; Zeichen enthalten ist haben die "....." als Feldbegrenzer

    Frage an die SQL Profis:
    Gibt es eine Funktion im SQL nach dem Motto

    - Durchsuche den String
    - wenn ;" gefunden dann ersetzten von ; mit _ bis zum nächsten ;"

    Dieses Beispiel sollte dann folgendes Ergebnis erhalten

    PHP-Code:
    ;DE;"PHOENIX VERF &AMP_ GLAS";G CANTE;HUIZEN,NH
    Gruß an alle
    Michael

    und erholsame Feiertage

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.973
    in einem ähnlichen Fall konnt ich nach '; ' (Semikolon blank) suchen, da die csv-Trenner immer direkt von einem Zeichen gefolgt waren.
    vllt passt das bei dir auch

    schöne Feiertage
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Jan 2003
    Beiträge
    746
    Nebenbei bemerkt: hier ist nicht das ";" durch "_" zu ersetzen sondern "& AMP;" durch "&" ...

    Geruhsame Festtage, bleibt gesund!

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Du willst also mit SQL in einer .csv-Datei, die vermutlich im IFS liegt &.AMP; durch & ersetzen?
    Am einfachsten geht das mit den neuen IFS-IBM Services und REPLACE.

    Etwa so:
    Code:
    Call Qsys2.Ifs_Write_Utf8(Path_Name   => '/Home/Dir1/Dir2/YourIfsFile.csv', 
                              Line        => Replace(Get_Clob_From_File('/Home/Dir1/Dir2/YourIfsFile.csv'), 
                                                     '&.AMP;', '&'), 
                              Overwrite   => 'REPLACE', 
                              End_Of_Line => 'NONE')
    Achtung: Ich habe zwischen & und AMP; einen Punkt gesetzt, da ansonsten nur ein Ampersand angezeigt werden würde.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Damit zerstörst du die Bedeutung des HTML-Tags.
    Du bräuchtest da eher ein HTML-Decode um die Zeichen korrekt zu ersetzen.
    Andererseits frage ich mich, wie du die Datei generell verarbeitest.
    Bei einem CPYFRMIMPF wird eine Datei komplett und korrekt in Einzelfelder zerlegt.
    Da stören Semikolon zwischen Anführungsstrichen absolut nicht.
    Zusätzlich erhält man auch eine korrekte Typisierung (Zeichen, Zahlen, Datum).

    Wenn man das alles selber macht sollte man halt die CSV-Methden auch alle implementieren.
    Es können schließlich immer solche Fälle entstehen.
    Und wenn da schon HTML-Encode drin steht, wird das mit Sicherheit auch alle anderen Sonderzeichen betreffen.

    https://www.designerinaction.de/tipp...sonderzeichen/
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Jan 2001
    Beiträge
    832
    Stopp

    es geht hier um das einlesen einer csv Datei die wir vom Transportdienstleister bekommen.
    Da sind Sendungsdaten enthalten.

    Die Datei hat den Aufbau das die Felder mit ; getrennt sind.

    Bei Feldinhalten in denen im Inhalt auf das ; Zeichen vorkommt sind mit den " als Feldtrenner gekennzeichnet. Die anderen Felder haben keine Feldtrenner

    Beispiel: Felder getrennt mit ;
    PHP-Code:
    42781;DE;ALUTHERM GLASHANDEL INDUSTRIET;FRAAP;HEERHUGOWAARD,NH,1704;NL 

    Der nächste Satz :
    PHP-Code:
    42781;DE;"3SN GLAS & METAAL B.V.";3SN BV;BERGEN LB,LI,5854;NL 
    Da sehen wir das "3SN GLAS & METAAL B.V." in dem Feld.

    Bevor ich das verarbeite müssten die Inhalte von ;"........"; geprüft und ggf. das ; ersetzt werden

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das habe ich schon verstanden. D.h. aber, dass eure Methode des Einlesens einfach falsch ist, da man nicht einfach einen Split mit Semikolon machen darf.
    Man sollte schon die Werte mit Anführungszeichen korrekt auslesen, dann stellt sich das Semikolon-Problem nicht, was eben der CPYFRMIMPF leistet.
    Da du den Dateiaufbau ja genau kennst, was hindert dich da am Import per CPYFRMIMPF?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Jan 2001
    Beiträge
    832
    Hi,

    an dem CPYFRMIMPF hindert mich eigentlich nichts:-)
    Ich wollte es nur mal mit dem SQL probieren :-)
    Wir sind doch modern


    Für alle schöne Weihnachten und alles Gute für das nächste Jahr

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Nun ja, wenn SQL auch CSV importieren könnte, wäre es modern.
    Nur weil man mit SQL IFS lesen kann, heißt es nicht, dass es auch sinnvoll ist.
    Ich habe letztens ein Programm beschleunigt, weil IFS_WRITE per SQL verwendet wurde statt CPYTOIMPF.
    100 Zeilen mit SQL schreiben dauerte 10 Sekunden, CPYTOIMPF 0,1 Sekunden.
    Das hat man dann von der "Moderne".

    In den 70ern bekam ich auch schon mal zu hören:
    "Wir haben jetzt Computer, da dauert es nun mal was länger."

    DAS hat sich nun nicht bewahrheitet.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. insert mit values macht immer table scan
    By franz77 in forum NEWSboard Programmierung
    Antworten: 22
    Letzter Beitrag: 21-12-18, 18:29
  2. %SCAN im CL Programm
    By Etherion in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 06-11-13, 19:24
  3. Feld-Scan mit n-Variablen
    By GEA in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 05-04-11, 10:02
  4. Scan von Objekten
    By Jamikl in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 19-03-04, 14:02
  5. SCAN bei ILE RPG ???
    By HoScHiE in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 06-09-01, 17:37

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •