CSV-bestanden met comma als decimale scheider verwerken

Invantive SQL biedt standaard mogelijkheden om tekstbestanden te verwerken in CSV, JSON, NDJSON, XML, HTML en Excel-formaat. Voor CSV-bestanden bestaat daarvoor csvtable zoals beschreven in Metadata definieren in csvtable, xmltable, jsontable en elders.

In de definitie van csvtable zoals beschreven in de SQL-grammatica kunnen de verwachte kolommen opgegeven worden, bestaande uit naam, datatype, verplicht en label.

Numeriek formaat bij CSV

Bij de conversie naar een getal is het voortaan ook mogelijk om het formaat op te geven waarin het getal is weergegeven. De volgende formaten worden ondersteund:

  • ,.: punt als decimale scheider, comma als groepsscheider.
  • .,: comma als decimale scheider, punt als groepsscheider.

De standaardwaarde (zoals voorheen) is ,. met punt als decimale scheider en comma als groepsscheider.

Voorbeeld CSV inlezen

Het inlezen van een CSV-bestand met een kopregel en daaronder de data als:

  • artikelcode
  • omschrijving
  • verkoopprijs
  • inkoopprijs

kan met bijvoorbeeld:

select t.partno
,      t.partdescr_dut
,      round(t.new_price_eur, 2)
       new_price_eur
,      round(t.gross_price, 2)
       gross_price
from   read_file_text@os('c:\temp\prijzen.csv') rfe
join   csvtable
       ( passing rfe.file_contents
         column delimiter chr(9)
         skip   lines 1
         columns partno               varchar2(30)  not null             position next
         ,       partdescr_dut        varchar2(240)     null             position next
         ,       gross_price          number        not null format '.,' position next
         ,       new_price_eur        number        not null format '.,' position next
       ) t