Re: Teilzugriff auf BLOB Felder
Verfasst: So 31. Jan 2021, 03:28
Hallo Ulrich,
bin gespannt, wie das ausgeht. Mir ist noch eingefallen:
Wenn Du die Daten eh auch in Dateien vorliegen hast, könntest Du fürs bulk load die gute alte external table nehmen. Das geht hier vermutlich einfach, weil Du a) Festformat hast, also definierte Feldlängen (alles bigint) und Feldanzahl (10 oder 100), und b) weil Du vermutlich keine <null>-Messpunkte hast. Dann wäre das Thema bulk load vom Tisch.
Falls das nicht geht, musst Du häufige Operationen auf Blobs vermeiden, das kann schnell der Flaschenhals werden. Und natürlich wenn möglich, den prepare-overhead bei insert statements vermeiden.
Oder Du bildest innerhalb einer SP einen Datenblock auf einen dynamisch erzeugten execute block ab, der insert-statements enthält und führst diesen execute block mit execute statement in der SP aus, im Prinzip ein blockweise dynamisch erzeugtes insert-skript. Das sql für den execute block darf aber nicht größer als 32K sein. Die Abbildung eines Datenblocks auf insert-statements sollte dabei nicht über Schleife, sondern wenn das geht, als ganzes passieren. Angenommen, Du hast Messdaten in der Art
1234 4711 2233 4321
1266 4712 2244 4442
1277 4713 2255 4311
also so eine Art csv-Format, dann ist das ganze schon relativ nahe an den entsprechenden insert-statements - den Datenblock mit einigen replace umgeformt musst Du nicht jeden Wert und jede Zeile einzeln anpacken. Das würde dann der body des execute blocks:
insert into zieltabelle values (1234, 4711, 2233, 4321);
insert into zieltabelle values (1266, 4712, 2244, 4442);
insert into zieltabelle values (1277, 4713, 2255, 4311);
Oder Du benutzt eine UDR fürs bulk load. Aber das ist wieder ein ganz anderes Fass, das man aufmachen kann
Viele Grüße, Volker
bin gespannt, wie das ausgeht. Mir ist noch eingefallen:
Wenn Du die Daten eh auch in Dateien vorliegen hast, könntest Du fürs bulk load die gute alte external table nehmen. Das geht hier vermutlich einfach, weil Du a) Festformat hast, also definierte Feldlängen (alles bigint) und Feldanzahl (10 oder 100), und b) weil Du vermutlich keine <null>-Messpunkte hast. Dann wäre das Thema bulk load vom Tisch.
Falls das nicht geht, musst Du häufige Operationen auf Blobs vermeiden, das kann schnell der Flaschenhals werden. Und natürlich wenn möglich, den prepare-overhead bei insert statements vermeiden.
Oder Du bildest innerhalb einer SP einen Datenblock auf einen dynamisch erzeugten execute block ab, der insert-statements enthält und führst diesen execute block mit execute statement in der SP aus, im Prinzip ein blockweise dynamisch erzeugtes insert-skript. Das sql für den execute block darf aber nicht größer als 32K sein. Die Abbildung eines Datenblocks auf insert-statements sollte dabei nicht über Schleife, sondern wenn das geht, als ganzes passieren. Angenommen, Du hast Messdaten in der Art
1234 4711 2233 4321
1266 4712 2244 4442
1277 4713 2255 4311
also so eine Art csv-Format, dann ist das ganze schon relativ nahe an den entsprechenden insert-statements - den Datenblock mit einigen replace umgeformt musst Du nicht jeden Wert und jede Zeile einzeln anpacken. Das würde dann der body des execute blocks:
insert into zieltabelle values (1234, 4711, 2233, 4321);
insert into zieltabelle values (1266, 4712, 2244, 4442);
insert into zieltabelle values (1277, 4713, 2255, 4311);
Oder Du benutzt eine UDR fürs bulk load. Aber das ist wieder ein ganz anderes Fass, das man aufmachen kann

Viele Grüße, Volker