Posts

Eine Postleitzahl ist kein VARCHAR2

Data Use Case Domains in Oracle 26ai Eine Domain ist ein eigenes Schemaobjekt. Nehmen wir eine deutsche Postleitzahl: CREATE DOMAIN deutsche_plz AS CHAR(5)      CONSTRAINT deutsche_plz_chk      CHECK (REGEXP_LIKE(deutsche_plz, '^[0-9]{5}$')); Damit haben wir einmal festgelegt: Eine DEUTSCHE_PLZ besteht aus genau fünf Ziffern. Beim Anlegen einer Tabelle lässt sich diese Domain einer Spalte zuordnen: CREATE TABLE kunde (     kunden_id NUMBER PRIMARY KEY,     name     VARCHAR2(100),     plz      CHAR(5) DOMAIN deutsche_plz ); Jetzt funktioniert es: INSERT INTO kunde VALUES (1, 'Müller', '60311'); Das hier dagegen nicht: INSERT INTO kunde VALUES (2, 'Meier', '60 A 11'); Der Check steckt nicht in KUNDE, sondern stammt aus der Domain. Dieselbe Domain kann anschließend auch für LIEFERADRESSE.PLZ, FILIALE.PLZ oder andere passende Spalten verwendet werden. Oracle wendet die Eigenschaften und Constraints der Dom...

alter table move mit Filter - Altdaten entsorgen und gleich reorganisieren

Fazit: Da ALTER TABLE MOVE auch die Filterung von Daten zulässt, kann damit sehr elegant: aufgeräumt und reorganisiert werden. Zitat: "Denn das ALTER TABLE MOVE beinhaltet eine  Filter Condition , die eine WHERE-Klausel verwendet, um die zu übertragenden Daten zu filtern. Man führt also das Purging der Altdaten und die Reorganisation in einem Schritt durch." Der vollständige Text findet sich hier: DOAG Datenbank Kolumne: Altdaten entsorgen und gleich reorganisieren: DOAG e.V.

Schnelles Lesen von CSV-Dateien - 1 billion row challenge in SQL and Oracle Database - bei "Gerald on IT"

Über die Oracle Datenbanken Monthly News bin ich auf den sehr interessanten Beitrag 1 billion row challenge in SQL and Oracle Database – Gerald on IT gestoßen.  In Kurzform: Es geht um das (sehr) schnelle Auswerten einer Wetterdaten-CSV-Datei mit 1 Mrd Zeilen. Spannend daran: Beispiele, wie das Einlesen/Abfragen von external Tables beschleunigt werden kann. Die Grundform ist: SELECT *   FROM EXTERNAL   (     (       station_name  VARCHAR2(26),       measurement   NUMBER(3,1)     )     TYPE oracle_loader     DEFAULT DIRECTORY brc     ACCESS PARAMETERS     (       RECORDS DELIMITED BY NEWLINE       FIELDS CSV WITHOUT EMBEDDED TERMINATED BY ';'     )     LOCATION ( 'measurements.txt' )     REJECT LIMIT UNLIMITED  ...