PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Решаване на грешка:открит нов ред в данните в Postgres?

Според кодов фрагмент от източника на PostgreSQL, 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;
}

това означава, че вашите входни данни използват байт 0x0A някъде във вашите низове, напр. използвате "abcNxyz" , където вместо N всъщност има байт със стойност 0x0A .

Решението е да използвате низ "abc\n" Вместо това. Трябва да можете да намерите всички фалшиви нови редове и да ги замените с \n използвайки някакъв скрипт, може би Python или Perl.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Приложението Rails на Heroku не може да пише в базата данни на PostgreSQL, само чете

  2. Внедряване на превключване/обратно превключване в PostgreSQL 9.3.

  3. как да събера множество стойности като един низ в postgres?

  4. SQLException:Този ResultSet е затворен

  5. Събирайте рекурсивни JSON ключове в Postgres