[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2009
    Beiträge
    208

    create or replace table

    Guten Abend.

    Wir wollen unsere

    Create Table lib/file as (
    select .... from ... where ...) with data

    Befehle ersetzen und statt Create ein create or replace verwenden (V7R1)

    Da geht nun das "with data" nicht!
    Was muß ich stat dessen machen

    Danke
    Dietlinde Beck

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... hört sich nach einem Anwendungsfall für eine "materialized Query table" an, die wird einmal erstellt und kann dann mit REFRESH TABLE aktualisiert werden.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Nov 2009
    Beiträge
    208
    Hallo Herr Bender,
    Das würde hier warscheinlich zu viel durcheinander bringen.
    Ich werde es mal mit den Kollegen durchsprechen.

    Geht denn ein "create or replace" nicht, wenn ich gleichzeitig Daten kopieren möchte?

    Danke
    DiBe

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Mach das dann in 3 Schritten:
    Create or replace Table MyTable ...;
    delete from MyTable;
    Insert into MyTable select * from MyTable2;

    Ggf. mach den Delete vor dem Create or replace.

    Der Create or Replace führt einen Alter Table unter Beibehaltung der Daten sowie aller Indizes durch.
    Wenn sich deine Spalten geändert haben, verwende eben mehrere Schritte.
    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

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Verwirrend,
    ... aber Du must WITH NO DATA angeben, damit die vorhandenen Daten nicht überklatscht werden.

    Nur zur Info:
    CREATE OR REPLACE in Verbindung mit einem SELECT-Statement kann man auch nutzen, wenn man auf eine Feld-Referenz-Datei referenziert.
    Ändert sich die Feld-Referenz-Datei muss man lediglich den CREATE OR REPLACE Table erneut ausführen und erhält so die geänderte Tabelle (mit allen abhängigen Objekten, wie Indices, Views, logische Dateien, Trigger, Constraints etc) ohne dass eine weitere Aktion notwendig ist.
    Bei Datei-Erweiterungen oder Änderungen wird lediglich das SELECT-Statement angepasst.

    CREATE OR REPLACE unterstützt allerdings nur, das, was der ALTER TABLE unterstützt.

    Falls irgendjemand auf die POW3R kommt: Genau das ist das Thema meines Vortrags

    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

  6. #6
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Beim CREATE OR REPLACE kannst du auch ON REPLACE DELETE ROWS angeben.
    Damit werden die Daten auch gleich gelöscht, falls die Tabelle schon existiert.

  7. #7
    Registriert seit
    Nov 2009
    Beiträge
    208
    Hallo, guten Morgen zusammen,

    es ist ein Ablauf, der in unregelmäßigen Abständen Daten 'copiert' und einer anderen Verarbeitung, teilweise PC, teilweise iSeries, zur Verfügung stellt.
    Der alte Ablauf war
    drop table
    create Table ... with data
    Jeweils in einem qmqry Statement, aufgerufen von einem CL, um das drop abzufangen, falls die Datei nicht existiert.
    Das wollte ich vereinfachen nach dem Motto:
    Wenn sie existiert: überschreibe sie, wenn Sie fehlt: erstelle sie
    Wenn create or replace das nicht kann, lass ich es wie es ist. Es sollte ja nur aus den 2 qmqry eins gemacht werden.

    Dietlinde Beck

  8. #8
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Wenn sich das Query nicht ändert, würde ich auch wie von Dieter vorgeschlagen MQTs einsetzen.
    Das ist nichts anderes als ein CREATE TABLE den du aber nur 1 mal absetzten musst.
    Sollen die Daten Aktualisiert werden, einfach ein REFRESH TABLE TAB1 und fertig.
    Damit ersparst du dir dann immer wieder die Tabelle neu zu erstellen.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Statt des Create Table kann sich auch durchaus ein Create View lohnen.
    Schließlich spart man sich die ganze regelmäßige Kopierarie und das Ergebnis ist immer aktuell.
    Eine Kopie der Daten ist doch tatsächlich nur für Spezialfälle wie CPYTOIMPF erforderlich, da der immer noch nicht aus einer View lesen kann. In diesem Fall läuft dann halt der Create explizit z.B. in die QTEMP.
    Alle anderen können doch native auf die View zugreifen.
    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

  10. #10
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Eine Kopie der Daten ist doch tatsächlich nur für Spezialfälle wie CPYTOIMPF erforderlich
    Wir verwenden im CPYTOIMPF bereits Views.

    Der Grund warum eine Tabelle erstellt wird, könnte auch sein, dass die Daten einige Zeit benötigen. Das kann ich dann vorgelagert laufen lassen und kann dann schnell mit dem Ergebnis arbeiten.

  11. #11
    Registriert seit
    Nov 2009
    Beiträge
    208
    Vielen Dank für die vielen gut gemeinten Ratschläge.

    Eine view fällt raus, da u.a. COPYTOIMPF (teilweise) benötigt wird.
    MQT und dauernd vorhandene Dateien wollen wir auch nicht.
    Ok, wir könnten diese nach der Verarbeitung clearen.
    Aber da werde ich nichts unternehmen, die bisherige Lösung funktioniert ja
    Und wenn vereinfachen durch create or replace nicht möglich ist, lassen wir es.

    Vielen Dank für Eure Unterstützung
    DiBe

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Welches Release hast du denn?
    Mach doch mal eine Kombination der vorgeschalgenen Lösungen (on replace delete...).
    Wenn das noch nicht funktioniert, musst du halt auf euren nächsten Releaseupdate warten.
    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. Create Schema / Table -> Jounale
    By malzusrex in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 21-03-16, 14:03
  2. Frage zu CREATE TABLE
    By Tonazzo in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 15-10-15, 22:36
  3. create table
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 18-05-15, 13:09
  4. CREATE TABLE
    By Willi1 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 03-05-02, 08:38
  5. DATFMT bei CREATE TABLE
    By lorenzen in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 21-03-01, 13:44

Berechtigungen

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