[ 
https://issues.apache.org/jira/browse/CSV-290?focusedWorklogId=811976&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-811976
 ]

ASF GitHub Bot logged work on CSV-290:
--------------------------------------

                Author: ASF GitHub Bot
            Created on: 26/Sep/22 02:12
            Start Date: 26/Sep/22 02:12
    Worklog Time Spent: 10m 
      Work Description: angusdev commented on PR #265:
URL: https://github.com/apache/commons-csv/pull/265#issuecomment-1257383391

   I can't test previous versions of PostgreSQL. But it is pretty safe to say 
that it applies to all versions.
   
   Postgresql support export to CVS since version 8.0 (year 2005, 
https://www.postgresql.org/docs/8.0/release-8-0.html)
   In the documentation of 8.1 
(https://www.postgresql.org/docs/8.1/sql-copy.html), it didn't state clearly 
but implied that the CSV export will not escape special characters.  The 
backslash escape is used for import data from text file (COPY FROM) only.
   
   For text format (tab delimited), there is no reason to quote the text.
   
   




Issue Time Tracking
-------------------

    Worklog Id:     (was: 811976)
    Time Spent: 40m  (was: 0.5h)

> Produced CSV using PostgreSQL format cannot be read
> ---------------------------------------------------
>
>                 Key: CSV-290
>                 URL: https://issues.apache.org/jira/browse/CSV-290
>             Project: Commons CSV
>          Issue Type: Bug
>          Components: Parser
>    Affects Versions: 1.6, 1.9.0
>            Reporter: Anatoliy Artemenko
>            Priority: Major
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> {code:java}
> // code placeholder
> {code}
> CSV, produced using printer:
>  
> CSVPrinter printer = new CSVPrinter(sw, 
> CSVFormat.POSTGRESQL_CSV.withFirstRecordAsHeader());
>  
> cannot be be read with same format parser:
>  
> CSVParser parser = new CSVParser(new StringReader(sw.toString()), 
> CSVFormat.POSTGRESQL_CSV.withFirstRecordAsHeader());
>  
> To reproduce: 
>  
> {code:java}
> StringWriter sw = new StringWriter(); 
> CSVPrinter printer = new CSVPrinter(sw, 
> CSVFormat.POSTGRESQL_CSV.withFirstRecordAsHeader());  
> printer.printRecord("column1", "column2"); 
> printer.printRecord("v11", "v12"); 
> printer.printRecord("v21", "v22");  
> printer.close();  
> CSVParser parser = new CSVParser(new StringReader(sw.toString()), 
> CSVFormat.POSTGRESQL_CSV.withFirstRecordAsHeader());  
> System.out.println("headers: " + 
> Arrays.equals(parser.getHeaderNames().toArray(), new String[] {"column1", 
> "column2"}));  
> Iterator<CSVRecord> i = parser.iterator(); 
> System.out.println("row: " + Arrays.equals(i.next().toList().toArray(), new 
> String[] {"v11", "v12"})); 
> System.out.println("row: " + Arrays.equals(i.next().toList().toArray(), new 
> String[] {"v21", "v22"}));{code}
> I'd expect the above code to work, but it fails:
> {code:java}
> java.io.IOException: (startline 1) EOF reached before encapsulated token 
> finishedjava.io.IOException: (startline 1) EOF reached before encapsulated 
> token finished 
> at org.apache.commons.csv.Lexer.parseEncapsulatedToken(Lexer.java:371) 
> at org.apache.commons.csv.Lexer.nextToken(Lexer.java:285) 
> at org.apache.commons.csv.CSVParser.nextRecord(CSVParser.java:701) 
> at org.apache.commons.csv.CSVParser.createHeaders(CSVParser.java:480) 
> at org.apache.commons.csv.CSVParser.<init>(CSVParser.java:432) 
> at org.apache.commons.csv.CSVParser.<init>(CSVParser.java:398) 
> at Test.main(Test.java:25)
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to