PDA

View Full Version : Mit PHP eine AS/400 Datei erstellen



tls_stefan
31-08-10, 08:57
Hallo zusammen,

ich habe Daten mit PHP eingelesen, und möchte sie nun in die AS/400 einlesen,
allerdings nicht in eine vorhandene Datei.

Gibt es noch einen anderen Weg ausser
anhand der eingelesenen Daten einen entsprechenden Create Table abzuleiten?

Vielleicht gibt es da schon einen Automatismus der mir unbekannt ist.

Prinzipiell habe ich oft unterschiedliche Daten die ich auf die AS/400 bringen muss ohne dass es dort Zieldateien gibt. (Ein direktes einfügen in die eigentlichen Zieldateien ist nicht gewünscht).

Wie geht Ihr in solchen Fällen vor ???

vielen Dank.

Fuerchau
31-08-10, 10:35
So wie du es schon sagst, von Fall zu Fall wird ein Create Table erzeugt.
Einen Automatismus gibt es insofern nicht.

SQL kann zwar auf Grund eines Select's eine Tabelle erstellen, aber dazu muss eben die Basis bereits vorhanden sein:
CREATE TABLE MYTABLE AS (Select ... from )

Auch das Kommando CPYF kann ja eine neue Tabelle auf Basis des Originals erstellen.

Ein Trick könnte noch folgendes sein:

create table mytable as
(select Ausdruck1 Name1, Ausdruck2 Name2, ... from SYSIBM.SYSDUMMY1)
with no data

Wobei Ausdruck1 - Ausdruckn jeweils ein konstanter Ausdruck sein muss:

Ausdruck1: 'XXXXXXX' F1
Ausdruck2: 1234567.12 F2
:

UFK
01-09-10, 22:55
Du könntest die Tabelle aber auch als flat-file ins Integrierte FileSystem (IFS) der AS/400 einlesen, und dort genauso wie in einem Unix- oder Windows-Verzeichnis zwischenspeichern. Dann sind die Daten zwar schon auf der AS/400, aber eben in keiner Datenbanktabelle (DB2/400) abgelegt.

Ich benutze z.B. gerne CSV-Dateien, da sich diese leicht aus Datenbankdateien extrahieren und dann mit Excel öffnen lassen, und sich auch anbieten, wenn man Daten z.B. aus Excel kommend in die AS/400 übertragen und später in Datenbanktabellen einarbeiten will (alles automatisch per Programm).

Andererseits erscheint mir dieser Weg bei Dir doch recht fragwürdig, denn dann nutzt Du PHP´s Fähigkeiten ja eigentlich nicht richtig aus, mit SQL direkt auf die AS/400 losgehen zu können.

Ok, ein AS/400-Admin mag es halt nicht so, wenn man seine Daten so mir nix Dir nix von aussen verdreht. Das muss man akzeptieren !

Eine Lösung wäre dann eine Kopie der Datenbank, die erstmal leer ist, bis Du was reinschreibst, und die vielleicht mit Triggern besetzt ist, welche die ankommenden Daten dann intern prüfen und weiterverarbeiten. Also sollte man dem AS/400-Admin mal vorschlagen, eine leere Kopie des Datenbank-Schemas zu erstellen (z.B. mit CrtDupObj ohne Daten), und diese frei zugänglich zu machen, damit Du sie füllen kannst.