sql >> Database teknologi >  >> RDS >> PostgreSQL

Løsning af fejl:bogstavelig ny linje fundet i data i Postgres?

Ifølge kodestykket fra PostgreSQL-kilden, copy.c :

 /* Process \n */
 if (c == '\n' && (!cstate->csv_mode || !in_quote))
 {
     if (cstate->eol_type == EOL_CR || cstate->eol_type == EOL_CRNL)
         ereport(ERROR,
             (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
             !cstate->csv_mode ?
             errmsg("literal newline found in data") :
             errmsg("unquoted newline found in data"),
             !cstate->csv_mode ?
             errhint("Use \"\\n\" to represent newline.") :
             errhint("Use quoted CSV field to represent newline.")));
      cstate->eol_type = EOL_NL;      /* in case not set yet */
      /* If reach here, we have found the line terminator */
      break;
}

det betyder, at dine inputdata bruger byte 0x0A et sted inde i dine strenge, f.eks. du bruger "abcNxyz" , hvor i stedet for N faktisk er der byte med værdien 0x0A .

Løsningen er at bruge strengen "abc\n" i stedet. Du burde være i stand til at finde alle falske nylinjer og erstatte dem med \n ved at bruge et eller andet script, måske Python eller Perl.



  1. hvordan tilføjer man brugerdefineret adapter til aktiviteten for at få listen til at blive vist i aktiviteten?

  2. Hvordan slår man PostgreSQL VERBOSITY til i django db-forbindelse?

  3. Kan ikke installere libmysqlclient-dev-pakken, når du bygger dockerfil med ubuntu

  4. #1025 - Fejl ved omdøbning (fejlnr.:150) i mysql