Announcement

Collapse
No announcement yet.

Logik durch Loader statt durch Schnittstelle?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Logik durch Loader statt durch Schnittstelle?

    Hallo Zusammen,

    habe da folgendes Problem.

    Wir bekommen eine CSV in richtiger Reihenfolge angeliefert.

    Sie ist folgender Massen aufgebaut.

    S1, a,b,c,d
    S2, 11,15
    s3 20110209,abc,def
    s3 20110309,abd,dea
    s3 20110709,abf,de
    S1, a,h,c,e
    S2, 11,18
    s3 20110309,abc,defg
    s3 20110509,ahd,da
    s3 20110919,aif,dei
    S1, a,b,c,i
    S2, 11,11
    s3 20110207,afc,defd
    s3 20110303,asd,deag
    s3 20110702,ajf,det
    S2, 11,11
    s3 20110211,afc,difd
    s3 20110403,asd,doagh
    s3 20110902,ajf,demg

    usw

    Wichtig ist nur, dass die Reihenfolge zuerkennen bleibt.

    Ist es theoretisch möglich
    dem loader mit der Option loadseq SEQUENCE(MAX,1)
    dann Oracle die gewünscht Reihenfolge zuübergeben
    oder muss ich da doch einen Programmierer beauftragen.

    Schonmal 1000 Dank

    Viele Grüße

    Martin

  • #2
    Das klappt:
    Tabelle
    Code:
    CREATE TABLE test_load
    (
      c1        VARCHAR2 (63),
      c2        VARCHAR2 (63),
      c3        VARCHAR2 (63),
      c4        VARCHAR2 (63),
      c5        VARCHAR2 (63),
      loadseq   INTEGER
    );
    Testfile
    Code:
    LOAD DATA
    INFILE *
    APPEND
    INTO TABLE test_load
    FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
    TRAILING NULLCOLS
    (c1, c2, c3, c4, c5,
    loadseq SEQUENCE(MAX,1))
    BEGINDATA
    S1, a,b,c,d
    S2, 11,15
    S1, a,h,c,e
    S2, 11,18
    S1, a,b,c,i
    S2, 11,11
    S2, 11,11
    Laden
    Code:
    sqlldr scott/tiger test_load.ctl
    Daten
    Code:
    c1      c2      c3     c4      c5     loadseq
    -------------------------------------------
    S1	a	b	c	d	1
    S2	11	15			2
    S1	a	h	c	e	3
    S2	11	18			4
    S1	a	b	c	i	5
    S2	11	11			6
    S2	11	11			7
    Wichtig ist die korrekte Behandlung von "fehlenden" Spalten (hier TRAILING NULLCOLS).

    Comment


    • #3
      Wenn's nur auf die Reihenfolge ankommt, kann man auch

      Code:
      spalte recnum
      nehmen. Dabei wird die Nummer der verwendeten Zeile übergeben. Übersprungene oder nicht gültige Zeilen werden in der Zählung berücksichtigt, sodass evtl. keine fortlaufende Nummerierung erfolgt. Auch hier ist das "Trailing nullcols" wichtig.

      Gruß

      Ralf

      Comment


      • #4
        Hallo Jum, Hallo Ralf,

        vielen Dank für Eure Hilfe.

        Ich muss mal sehen, ob die Reihenfolge dann wirklich reicht, lt Aussage einer Fachabteilung schon.

        Im Grunde ist es bis zum nächsten S1 immer ein 'Datensatz'.

        Evtl muss ich dann doch drei Tabellen(S1,S2,S3) erstellen und evtl normalisieren.

        Im Grunde besagt
        S1->wer hat gekauft
        S2->bei wem
        S3->was und wann


        Einfluß auf die Datenlieferung haben wir nicht.

        Vielen Dank nochmals!

        Viele Grüße

        Martin

        Comment

        Working...
        X