CSV inlezen lukt niet voor gebruik in Sumatra

Ik probeer een csv besteand in te lezen met het volgende statement:

select t.codeBedrijf
from   read_file_text@os('C:\CSVData\ExportKosten.csv') rfe
join   csvtable
      (passing rfe.file_contents
          column delimiter ';'
 
          skip   lines 1
        columns codeBedrijf  varchar(50) NOT NULL position next
    )  T

Dit geeft de volgende foutmelding:

itgensql056
Statement #1 ‘select t.code… delimiter ‘;’’ starting on line 1 caused an error.
Syntax error between the two ‘***’ on line 5, column 30:
select t.codeBedrijf… column delimiter ‘;’
Error: no viable alternative at input ‘select t.codeBedrijf\r\nfrom read_file_text@os(‘C:\CSVData\ExportKosten.csv’) rfe\r\njoin csvtable\r\n (passing rfe.file_contents\r\n column delimiter ‘;’’.

Het CSV-bestand ziet er grofweg zo uit:

codeBedrijf,codeProject,codeKostensoort,Period,QuantityWerkbegroting,AmountStdWerkbegroting,QuantityToegestanekosten,AmountStdToegestanekosten
B0810,2022050,,08-2023,0,0,0,0
B0810,2022050,10100,08-2023,123.456,123.456,123.456,123.456

Het bestandsformaat is Unix (LF) in UTF-8 volgens Notepad++.

Hoe kan ik dit probleem oplossen?

De data kan ingelezen worden met een SQL-statement zoals:

select t.*
from   csvtable
       ( passing file 'c:\temp\ExportKostenBeknopt.csv'
         row     delimiter chr(10)
         column  delimiter ',' 
         skip    lines 1
         columns codeBedrijf               varchar(50) not null position next
         ,       codeProject               varchar(30) not null position next
         ,       codeKostensoort           varchar(30)     null position next
         ,       Period                    varchar(30) not null position next
         ,       QuantityWerkbegroting     decimal     not null position next
         ,       AmountStdWerkbegroting    decimal     not null position next
         ,       QuantityToegestanekosten  decimal     not null position next
         ,       AmountStdToegestanekosten decimal     not null position next
    )  t

Merk op dat het expliciet nodig is om de regelseparator te vermelden als chr(10). Dit is het linefeed character (in bijvoorbeeld vi zichtbaar als ^J). Voor een MacOS-bestand zou expliciet chr(13) opgegeven moeten worden (in bijvoorbeeld vi zichtbaar als ^M).

1 like

Deze vraag is automatisch gesloten na 2 weken inactiviteit. Het laatste gegeven antwoord is gemarkeerd als oplossing.

Gelieve een nieuwe vraag te stellen via een apart topic als het probleem opnieuw optreedt. Gelieve in de nieuwe vraag een link naar dit topic op te nemen door de URL er van in de tekst te plakken.

Dit topic is 7 dagen na het laatste antwoord automatisch gesloten. Nieuwe antwoorden zijn niet meer toegestaan.