[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2015
    Beiträge
    334

    Inhalt CLOB Feld in IFS-Datei

    Hallo zusammen !

    Ich möchte den Inhalt eines CLOB-Feldes in eine IFS-Datei schreiben. Wie sähe hierzu der Syntax aus ? Habe schon mal gegoogelt und rumprobiert.


    EXEC SQL SELECT TEXTTC INTO ???? (wie ist d. Syntax des Pfades im IFS)
    FROM GENPF0TC
    where IDIDTC = AUSWAHLNUMMER WITH NC;

    Was heisst das "WITH NC" und warum macht man das ?

    Bitte um Hilfe, besten Dank !

    Gruss A.

  2. #2
    Registriert seit
    May 2007
    Beiträge
    295
    Hallo Alex.
    Ist schon ne weile her aber ich habe es folgendermaßen gemacht:

    Man braucht im RPGLE folgende Variablen im SQLTYPE:
    Code:
    D xMyNew          S                    SQLTYPE(CLOB_FILE) CCSID(1252)
    D gxMyData        S                    SQLTYPE(CLOB:32766)
    Ins Feld (hier zum Beispiel der Name) gxMyData fetcht man die CLOB-Daten aus der Tabelle und diese schiebst dann ins "xMyNew". Dieser CLOB_FILE erstellt dir dann mit der angegebenen CCSID die Datei mit dem Inhalt.

    Code:
    xMyNew_NAME=/Dateipfad/Name;                
    xMyNew_NL=%Len(%Trim(xMyNew_NAME)); 
    xMyNew_FO=SQFAPP;                   
    Exec SQL SET :xMyNew=:gxMyData;
    Ich denke damit kommst schon etwas weiter.
    Man findet aber massig Informationen über SQLTYPE und CLOB_FILE über google.
    Mein Code soll nur ein Wegweiser sein :-)

    PS: Das mit dem "WITH NC" bedeutet nur das SQL ohne Commitment werkeln soll.
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das ist schon korrekt, wobei in ILERPG Variaben bis 16MB, bzw. im Teraspace auch > 2GB groß sein dürfen.
    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

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Zitat Zitat von prsbrc Beitrag anzeigen
    Hallo Alex.
    Ist schon ne weile her aber ich habe es folgendermaßen gemacht:

    Man braucht im RPGLE folgende Variablen im SQLTYPE:
    Code:
    D xMyNew          S                    SQLTYPE(CLOB_FILE) CCSID(1252)
    D gxMyData        S                    SQLTYPE(CLOB:32766)
    Ins Feld (hier zum Beispiel der Name) gxMyData fetcht man die CLOB-Daten aus der Tabelle und diese schiebst dann ins "xMyNew". Dieser CLOB_FILE erstellt dir dann mit der angegebenen CCSID die Datei mit dem Inhalt.

    Code:
    xMyNew_NAME=/Dateipfad/Name;                
    xMyNew_NL=%Len(%Trim(xMyNew_NAME)); 
    xMyNew_FO=SQFAPP;         //Ersetzen falls bereits vorhanden          
    Exec SQL SET :xMyNew=:gxMyData;
    Ich denke damit kommst schon etwas weiter.
    Man findet aber massig Informationen über SQLTYPE und CLOB_FILE über google.
    Mein Code soll nur ein Wegweiser sein :-)

    PS: Das mit dem "WITH NC" bedeutet nur das SQL ohne Commitment werkeln soll.
    Fast, nur dass die Daten direkt mit SELECT... into ins IFS geschrieben wird.

    Code:
     DCL-S  MyClobFile  SQLTYPE(CLOB_File);
    
     MyClobFile_Name = '/home/Dir1/Dir2/YourFile.yourExt';
     MyClobFle_NL    = %Len(%Trim(MyClobFile_Name));
     MyClobFile_FO   = SQFOVR;
    
     Exec SQL  Select YourClob into :MyClobFile
                 From yourTable
                 Where YourWhereConditions;
    Commitment Control ist nur erforderlich wenn mit LOB-Locators gearbeitet wird. Für File-Reference-Variablen wird Commitment Control nicht benötigt.

    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
    Jun 2015
    Beiträge
    334
    Besten Tag an alle ! Ihr habt mir sehr geholfen. Funktioniert einwandfrei.
    Gruss A.

  6. #6
    Registriert seit
    Jun 2015
    Beiträge
    334
    Besten Dank natürlich !!!

  7. #7
    Registriert seit
    Jun 2015
    Beiträge
    334
    Hallo zusammen !
    muss doch nochmals nachhaken. Für eine Abfrage klappt das ja jetzt mit dem Auslesen CLOB in eine IFS-Datei.
    Wenn ich jetzt eine Inputdatei mit etlichen Artikelnummern habe und möchte per ILE Programm zu all diesen Artikeln die CLOB-Texte (aus anderer Tabelle) dazu lesen, wie kann ich dann bewerkstelligen, dass das in dieselbe IFS-Datei wandert und durch den SELECT INTO nicht jeweils eine neue IFS-Datei erstellt wird ?

  8. #8
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Ich glaube nicht, dass das geht. Du musst das bestehende Clob wieder lesen, die Artikelnummer dranhängen und wieder speichern. Effizienter wäre es sicher, erst alle Artikelnummern zum Blob hinzuzufügen und dann das fertige Clob einmalig zu speichern.

Similar Threads

  1. Textteil ersetzen in CLOB - Feld
    By alex61 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 09-06-16, 14:26
  2. MONMSG: Inhalt abfragen
    By JoergHamacher in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 03-02-16, 12:47
  3. SQL-Anweisung UPDATE auf CLOB-Spalte mit einer Zeichenfolge >32K
    By Joshua in forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 24-11-15, 11:53
  4. Antworten: 1
    Letzter Beitrag: 10-09-15, 18:33
  5. CPYTOIMPF Blank beim Export aber Inhalt von Feld = leer
    By TheDevil in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 05-06-14, 22:47

Berechtigungen

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