Metadata definieren in csvtable, xmltable, jsontable en elders

Invantive SQL maakt het mogelijk om externe gegevens te verwerken uit bestanden, databasevelden en Internet URL’s, zoals:

  • xmltable: XML data omzetten in een relationele tabel;
  • exceltable: Excel spreadsheet omzetten naar een tabel (voorbeeld);
  • htmltable: HTML-documenten omzetten naar een tabel;
  • jsontable: JSON-documenten omzetten;
  • ndjsontable: NDJSON-documenten omzetten naar een tabel;
  • csvtable: CSV-documenten omzetten naar een tabel.

In de kolomdefinities was het voorheen mogelijk om het datatype (zoals varchar2) op te geven. Voortaan is het ook mogelijk om de nullability in te stellen en het label, zoals bijvoorbeeld met:

select *
from   ndjsontable
       ( passing file 'c:\voorbeeld.ndjson'
         ignore invalid line
         columns id                     int64    not null label 'ID'             path 'Id'
         ,       thread_id              int32    not null label 'Thread ID'      path 'ThreadId'
         ,       session_id             varchar2 not null label 'Session ID'     path 'SessionId'
         ,       pool_identity_id       varchar2     null label 'Pool Identity'  path 'PoolIdentityId'
         ,       message_code           varchar2     null label 'Message Code'   path 'MessageCode'
         ,       occurred               datetime not null label 'Occurred (UTC)' path 'Occurred'
         ,       message_text           varchar2     null label 'Message'        path 'Message'
         ,       calling_provider_alias varchar2     null label 'Alias'          path 'CallingProviderAlias'
       )
       msg

Indien data niet voldoet aan de not null constraint zal een foutmelding worden getoond.

De tekst achter label zal gebruikt worden als kolomkop voor de data in bijvoorbeeld het Invantive Query Tool. Bij het label kan ook gebruik gemaakt worden van vertaalbare resources zoals {res:itgen_code}.

Create Table

De nieuwe mogelijkheden voor het opgeven van nullability en het label zijn ook beschikbaar bij het aanmaken van een tabel zoals:

create table sample@inmemorystorage
( a_number number not null label 'The Number'
)


insert into SAMPLE@InMemoryStorage
( a_number
)
values
( 1
)

select *
from   SAMPLE@InMemoryStorage

met als resultaat:

Label op create table

Cast

De nieuwe mogelijkheden voor het opgeven van nullability en het label zijn ook beschikbaar bij de SQL-functie cast zoals:

create or replace table x@inmemorystorage
as
select cast(dal.dummy_string as varchar2 not null label 'A string') c
from   dual@datadictionary dal

Nullability van Constanten

Bij de evaluatie van constanten is de bepaling van de nullability ook verbeterd. Een constante die geen NULL is, zal voortaan als een verplichte waarde beschouwd worden, zoals in:

create or replace table sample@inmemorystorage
as
select 'x' val

Beschikbaarheid

Met ingang van release 20.2.72 is het mogelijk om meer eigenschappen van velden vast te leggen.