in reply to Re: Problem parsing semicolon delimited file with DBD::CSV
in thread Problem parsing semicolon delimited file with DBD::CSV

Thanks for the information, I knew the samples I was using would not get me to the exact place.

I made the suggested changes and still get the same error as above. I find through some research that it is not figuring out the columns from the first row.

Anything else I can check?

Thanks - Mike
  • Comment on Re^2: Problem parsing semicolon delimited file with DBD::CSV

Replies are listed 'Best First'.
Re^3: Problem parsing semicolon delimited file with DBD::CSV
by ikegami (Patriarch) on Jul 28, 2006 at 00:09 UTC
    try using field_sep instead of sep_char. I can't find any mention of the latter in the sources.
      Thanks, tried the field_sep and still the same result. It does not look like it is recognizing the code to tell it to use the semicolon as a separator character and is still using commas.
Re^3: Problem parsing semicolon delimited file with DBD::CSV
by jZed (Prior) on Jul 28, 2006 at 15:03 UTC
    Try to also directly set the eol character to "\n". Try to change the names of Date and Time (because they are SQL keywords). I ran your code with your data and the changes I suggested above and it worked for me.
      I tried as you suggested.

      If I use DBD::CSV without DBD::AnyData it works great, when I use DBD::AnyData and pass the eol and field separator character through it dies with the messages in the original message.

      I am running ActivePerl 5.8 on Windows using Komodo 3.5 to do the development and debugging.

      As I run the debugger, I find that as the code moves from DBD::AnyData to DBD::CSV, CSV parses the first record correctly but for some reason as the code jumps back to DBD::AnyData, AnyData does not see the parsed record and dies with the messages in the original message.

      Being a novice not sure why or whatelse to look for but it is interesting your code works and mine does not. One other thing I found is my records are terminated with CRLF which I was able to pass to DBD::AnyData and parse the records fine and with DBD::CSV I use just the \n and it parses the records fine while if I pass DBD::AnyData just the \n it does not parse the records at all.

      Sorry this is so long wind and may be rambling but I am trying my best to provide reasonably good information to help.

      Thanks
      Mike

        Which version of these modules do you have? Can you show us your code?
        You wrote:
        Being a novice not sure why or whatelse to look for but it is interesting your code works and mine does not. One other thing I found is my records are terminated with CRLF which I was able to pass to DBD::AnyData and parse the records fine and with DBD::CSV I use just the \n and it parses the records fine while if I pass DBD::AnyData just the \n it does not parse the records at all.
        Well, don't look any further, that is the answer. Neither module can parse CSV files without knowing what the record terminator is. In DBD://AnyData, the default is "\n", in other words the line terminator for the OS on which the program is running. In DBD::CSV the default is "\015\012" (CRLF) which will only be the same as the line terminator when the program is running in windows.

        Thanks for following up and letting me know how you resolved the issue.