PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Memecahkan kesalahan:baris baru literal ditemukan dalam data di Postgres?

Menurut cuplikan kode dari sumber 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;
}

artinya data input Anda menggunakan byte 0x0A di suatu tempat di dalam string Anda, mis. anda menggunakan "abcNxyz" , di mana alih-alih N sebenarnya ada byte dengan nilai 0x0A .

Solusinya adalah dengan menggunakan string "abc\n" sebagai gantinya. Anda seharusnya dapat menemukan semua baris baru palsu dan menggantinya menjadi \n menggunakan beberapa skrip, mungkin Python atau 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. Bagaimana cara membuat cadangan satu tabel dalam database postgres?

  2. SUM() Fungsi di PostgreSQL

  3. Menghapus acara yang sebagian/sepenuhnya tumpang tindih dengan stempel waktu mulai dan berakhir di beberapa nilai

  4. Apa cara terbaik untuk memuat sejumlah besar data ke dalam PostgreSQL?

  5. Kueri SQL tak terduga ke database Postgres di Rails/Heroku