Thank you Julius, it works perfect!

I choose : do rec.OrgTypeSetObjectId($piece(line, ",", 2))

HI Robert, I have got it working now, and yes, the harder you struggle the bigger the victory when you succeed. And it is the charm of InterSystemssmiley

Thanks Eduard, I will come back on you're recommendation for sure in short time, as I did not fully understood last time.

Hi Robert, you are right, but I forgot to mention I got the error after adding Eduard his recommendationsmiley.

This is the code:

ClassMethod ImportCSV()
  set adapter = ##class(%File).%New("C:\temp\in.csv")
  set status = adapter.%Open("R")
  if $$$ISERR(status)
   do $System.Status.DisplayError(status)
  set counter =1
  while 'adapter.AtEnd
   set line=adapter.ReadLine()
   set rec= ##class(CSVRecord).%New()
   set rec.ID=$piece(line,";",1)
   set rec.FName=$piece(line,";",2)
   set rec.Secname=$piece(line,";",3)
   set rec.Gender=$piece(line,";",4)
   set rec.Age=$piece(line,";",5)
     write rec.ID,
             rec.Secname ,
         Set savestatus=rec.%Save()
      if $$$ISERR(savestatus)
     do $System.Status.DisplayError(status)
    //if error found during processing,show it
    if $$$ISERR(status)
     do $System.Status.DisplayError(status)

I do notice this topic comes back in time in the Community, so people are interested -and struggling with it like myself, but if we look back the items leave quite unanswered.... as people do not share their final working code... and only tell that they have solved the question.


Hi there,  tried the code sample above and got this:


Unfortunately the community & books are full with half code snippets rather than showing working full code samples>

Themelani, can you please share you're working code to the community? then the item is completed! Thanks!

I have recently (June 2018) bought the book,  unfortunately no download of samples available (which I particular was hoping for).

Hi Eric, last time I have resolved by just doing a new installation.

However last week (march 2018) I got the same issue on all 4 instances on my computer. No clue what have caused the issue.

According to the logfile I had to delete Cache.WIJ which I did. I also replaced cache.cpf with _last.good-.cpf and deleted Cache.ids as you have recommended.

After this I restarted the machine. No result however.

According to Windows services : the Webserver for Cache cannot be started.

I want to share this information. I do not have a licence for official support, but do want to continue development in Cache.


Hi Eduard, hard to get it working!

my file:

my code:

Class TestCsv.Csv Extends %Persistent

Property name As %String;

Property year As %Integer;

Property amount As %Numeric;

Property date As %Date;

ClassMethod Import()
set rowtype = "name VARCHAR(50),year INTEGER,amount NUMERIC(9,2),date DATE"
    set filename = "c:\temp\data.csv"
    do ##class(%SQL.Util.Procedures).CSVTOCLASS(2, .rowtype, filename,,,,"TestCsv.Csv")

My result:

(I use Windows 10)

no result

My filetest:

I still cannot find the error.

Hi there,

I have the following sample code, but none of them works.

with the last class I did test my csv file and it worked.

Class ZenImport.Country Extends %Persistent

Property Code As %String;

Property Name As %String;

ClassMethod LoadFromFile()
 Set pFileName="C:\temp\Country.csv"
 Set pDelimiter= $C(9)
 //Set pDelimiter=";"
 Set rowType="Code VARCHAR(2),Name VARCHAR(9)"
 Do ##class(%SQL.Util.Procedures).CSVTOCLASS(2,.rowType, pFileName, pDelimiter)

ClassMethod LoadFromFile2()
 set rowtype = "Code VARCHAR(2),Name VARCHAR(9)"
 set filename = "c:\temp\Country.csv"
 do ##class(%SQL.Util.Procedures).CSVTOCLASS(2, .rowtype, filename,,,,"Country.csv")

ClassMethod ImportCountries(srcDir As %String = "C:\temp", srcFile As %String = "Country.csv")
    try {
        set status = ##class(ZenImport.Country).%DeleteExtent()
        if $$$ISOK(status) {write !, "Deleted LS.Country Data"}
        else {do $system.Status.DisplayError(status) return}
    catch ex {}

    set srcStream = ##class(%Stream.FileCharacter).%New()
    set srcPath = srcDir_"\"_srcFile
    set srcStream.Filename = srcPath
    set srcStream.TranslateTable = "UTF8"

    set selectMode = 0
    set rowType = "Code VARCHAR(2),Name VARCHAR(9)"
    set delimiter = ";"
    set quote = """"
    set headerCount = 0
    set classname = "ZenImport.Country"
    do ##class(%SQL.Util.Procedures).CSVTOCLASS(selectMode, rowType, srcStream, delimiter, quote, headerCount, classname)

    write !, "Imported " _ srcPath _ " to ZenImport.Country", !

ClassMethod ImportStream() [ ZenMethod ]
///Test csv File -THIS ONE WORKS!-
Set stream=##class(%Stream.FileCharacter).%New()
Set sc=stream.LinkToFile("c:\temp\Country.csv")
if $$$ISERR(sc) Quit 
While 'stream.AtEnd {
Set line=stream.Read()


write !, line

Quit $$$OK

Test reading csv:


Hopefully you have a suggestion how I can get it working!

Yes it does hold ID value's. Great it works! Thank you Daniel.